int8 tunerbb_drv_t39fx_read_data(uint8* buffer, uint32* buffer_size) { TDMB_BB_HEADER_TYPE dmb_header; uint8* r_buffer = NULL; #if 0 dmb_header.data_type = (serviceType == T39FX_DAB?TDMB_BB_DATA_DAB:TDMB_BB_DATA_TS); dmb_header.size = INC_INTERRUPT_SIZE; dmb_header.subch_id = 0; dmb_header.reserved = 0;//0xDEAD; memcpy(buffer, &dmb_header, sizeof(TDMB_BB_HEADER_TYPE)); if(INTERFACE_ISR(TDMB_RFBB_DEV_ADDR, buffer + sizeof(TDMB_BB_HEADER_TYPE))!=INC_SUCCESS) { *buffer_size = 0; printk(" ISR READ Error! \n"); return INC_ERROR; } *buffer_size = INC_INTERRUPT_SIZE + sizeof(TDMB_BB_HEADER_TYPE); return INC_SUCCESS; #else uint32 r_size = 0; r_buffer = (buffer + sizeof(TDMB_BB_HEADER_TYPE)); r_size = INTERFACE_ISR(TDMB_RFBB_DEV_ADDR, r_buffer); if(r_size == (uint32)INC_ERROR) { *buffer_size = 0; printk("ISR READ Error!!\n"); return INC_ERROR; } dmb_header.data_type = (serviceType == T39FX_DAB?TDMB_BB_DATA_DAB:TDMB_BB_DATA_TS); dmb_header.size = r_size; dmb_header.subch_id = 0; dmb_header.reserved =0; //0xDEAD; memcpy(buffer, &dmb_header, sizeof(TDMB_BB_HEADER_TYPE)); *buffer_size = r_size + sizeof(TDMB_BB_HEADER_TYPE); return INC_SUCCESS; #endif }
int8 tunerbb_drv_t3900_read_data(uint8* buffer, uint32* buffer_size) { if(INTERFACE_ISR(TDMB_RFBB_DEV_ADDR, buffer)!=INC_SUCCESS) { *buffer_size = 0; return INC_ERROR; } *buffer_size = INC_INTERRUPT_SIZE; return INC_SUCCESS; }
int8 tunerbb_drv_lg2102_read_data(uint8* buffer, uint32* buffer_size) { TDMB_BB_HEADER_TYPE dmb_header; dmb_header.data_type = (serviceType == LG2102_DAB?TDMB_BB_DATA_DAB:TDMB_BB_DATA_TS); dmb_header.size = LGD_INTERRUPT_SIZE; dmb_header.subch_id = g_subch_id; dmb_header.reserved = data_sequence_count++;//0xDEAD; memcpy(buffer , &dmb_header, sizeof(TDMB_BB_HEADER_TYPE)); if(INTERFACE_ISR(TDMB_RFBB_DEV_ADDR, buffer + sizeof(TDMB_BB_HEADER_TYPE))!=LGD_SUCCESS) { *buffer_size = 0; return LGD_ERROR; } *buffer_size = LGD_INTERRUPT_SIZE + sizeof(TDMB_BB_HEADER_TYPE); return LGD_SUCCESS; }
int8 tunerbb_drv_lg2102_multi_read_data(uint8 subch_cnt, uint8* buffer, uint32* read_size) { LGD_UINT8* IntBuff = &initBuff[0]; ST_FIFO* pMultiFF; int nDataSize; int i; LGD_UINT32 buf_size = 0; TDMB_BB_HEADER_TYPE dmb_header; LGD_UINT16 uFIBCnt; if(buffer == NULL || read_size == NULL) { return LGD_ERROR; } if(INTERFACE_ISR(TDMB_RFBB_DEV_ADDR, IntBuff)!=LGD_SUCCESS) { return LGD_ERROR; } if(subch_cnt>LGD_MULTI_MAX_CHANNEL) { return LGD_ERROR; } if(LGD_MULTI_FIFO_PROCESS(IntBuff, LGD_INTERRUPT_SIZE)) { #ifdef LGD_MULTI_CHANNEL_FIC_UPLOAD // (i==1) => FIC_STREAM_DATA, pMultiFF = LGD_GET_CHANNEL_FIFO(FIC_STREAM_DATA); uFIBCnt = LGD_GET_FIB_CNT(m_ucTransMode); nDataSize = LGD_QFIFO_GET_SIZE(pMultiFF); if(nDataSize >= (uFIBCnt*FIB_SIZE)) { wFicLen = (uFIBCnt*FIB_SIZE); LGD_QFIFO_BRING(pMultiFF, abyBuff, wFicLen); #ifdef LGD_EWS_SOURCE_ENABLE if(LGD_EWS_PARSING(abyBuff, wFicLen)==LGD_SUCCESS) { ST_OUTPUT_EWS* pstEWSMsg; LGD_GET_EWS_DB(pstEWSMsg); /////////////////////////// // TO-DO : process EWS Data /////////////////////////// } #endif } #endif for(i=0;i<subch_cnt;i++) { /************************************************ (i==2) => CHANNEL1_STREAM_DATA, (i==3) => CHANNEL2_STREAM_DATA, (i==4) => CHANNEL3_STREAM_DATA, ************************************************/ pMultiFF = LGD_GET_CHANNEL_FIFO(i+2); nDataSize = LGD_QFIFO_GET_SIZE(pMultiFF); if(nDataSize>=LGD_INTERRUPT_SIZE) { dmb_header.reserved = 0xDEAD; dmb_header.data_type = g_datatype[i]; dmb_header.size = nDataSize; dmb_header.subch_id = g_subch_id[i]; memcpy(buffer,&dmb_header,sizeof(TDMB_BB_HEADER_TYPE)); buffer += sizeof(TDMB_BB_HEADER_TYPE); buf_size += sizeof(TDMB_BB_HEADER_TYPE); LGD_QFIFO_BRING(pMultiFF, buffer, nDataSize); buffer += nDataSize; buf_size += nDataSize; } } } *read_size = buf_size; return LGD_SUCCESS; }