int Tune(unsigned char streamid, unsigned int Frequency, enum DibSpectrumBW Bw ) { DIBSTATUS Status = DIBSTATUS_SUCCESS; /* Tuning parameters */ struct DibChannel ChDesc; unsigned char FrontendId; unsigned char ChId; /*** Master Host DMA Stream, using frontend 0 ***/ if (streamid == 0) { FrontendId = 0; } /*** Slave 1 Host DMA Stream, using frontend 1 ***/ else if (streamid == 4) { FrontendId = 1; } /*** Slave 2 Host DMA Stream, using frontend 2 ***/ else if (streamid == 5) { FrontendId = 2; } else { printf("Only Stream 0, 4 and 5 can be used in DAB\n"); return -1; } ChId = GetChIdFromStrId(streamid); /** Get the stream in DVBT mode**/ Status = DibGetStream(pContext, globalInfo.Stream[streamid], eSTANDARD_DAB, 0, ePOWER_ON); if (Status != DIBSTATUS_SUCCESS) { printf("DibGetStream Failed \n"); return -1; } else { printf("DibGetStream Successfull, Stream: %d\n", streamid); } /** Attach a frontend **/ Status = DibAddFrontend(pContext, globalInfo.Stream[streamid], globalInfo.Frontend[FrontendId], NULL, 0); if (Status != DIBSTATUS_SUCCESS) { printf("DibAddFrontend Failed \n"); return -1; } else { printf("DibAddFrontend Successfull, Connect Frontend %d to Stream %d\n",FrontendId,streamid); } /* Initialise tune parameters */ ChDesc.Type = eSTANDARD_DAB; ChDesc.ChannelDescriptor.Bw = Bandwidth; ChDesc.ChannelDescriptor.RFkHz = Frequency; ChDesc.ChannelDescriptor.InvSpec = eDIB_SPECTRUM_AUTO; ChDesc.ChannelDescriptor.Std.Dab.NbActiveSub = -1; ChDesc.ChannelDescriptor.Std.Dab.TMode = eDIB_DAB_TMODE_AUTO; /* Tune Channel */ Status = DibGetChannelEx(pContext, globalInfo.Stream[streamid], &ChDesc, &DibChannelHdl[ChId], NULL, NULL); if ( (Status == DIBSTATUS_SUCCESS) && (ChDesc.ChannelDescriptor.ScanStatus == DIB_SCAN_SUCCESS)) { printf("Tune Successfull DVBT on %d KHz\n", Frequency); return DIBSTATUS_SUCCESS; } else { printf("Tune Failed DVBT on %d KHz\n",Frequency); return DIBSTATUS_ERROR; } }
DBG("TSTV:DIBCOM!1009XH: Number of demod %d \t%s[%d]\n\n", globalInfo.NumberOfDemods,__FUNCTION__, __LINE__); DBG("TSTV:DIBCOM!1009XH: NumberOfStreams: %d\n", globalInfo.NumberOfStreams); return DIBSTATUS_SUCCESS; } static int Tune_DVB(unsigned int Frequency, enum DibSpectrumBW Bw ) { DBG("TSTV:DIBCOM1009XH: \t%s[%d]\n", __FUNCTION__, __LINE__); DIBSTATUS Status = DIBSTATUS_SUCCESS; /* Tuning parameters */ struct DibChannel ChDesc; #if 0 /** Get the stream in DVBT mode**/ /Status = DibGetStream(pContext, globalInfo.Stream[1], eSTANDARD_DVB, MpegTsMode | (MpegTsSize << 1), ePOWER_ON); if(Status != DIBSTATUS_SUCCESS) { DBG("TSTV:DIBCOM1009XH: DibGetStream failed \t%s[%d]\n", __FUNCTION__, __LINE__); } /** Attach a frontend **/ Status = DibAddFrontend(pContext, globalInfo.Stream[1], globalInfo.Frontend[0], NULL, 0); if(Status != DIBSTATUS_SUCCESS) { DBG("TSTV:DIBCOM1009XH: DibAddFrontend failed \t%s[%d]\n", __FUNCTION__, __LINE__); } #endif /* Initialise tune parameters */ ChDesc.ChannelDescriptor.Bw = Bw; ChDesc.ChannelDescriptor.RFkHz = Frequency;
/* Tune on Stream 2 with FE 1 & FE 2 */ int TuneStream2(unsigned int Frequency, enum DibSpectrumBW Bw ) { DIBSTATUS Status = DIBSTATUS_SUCCESS; struct DibChannel ChDesc; int i; /*** Get Stream 2: MPEG_TS2 ***/ Status = DibGetStream(pContext, globalInfo.Stream[2], eSTANDARD_ISDBT, MpegTsMode | (MpegTsSize<<1), ePOWER_ON); if (Status != DIBSTATUS_SUCCESS) { printf("DibGetStream 2 Failed \n"); return -1; } else { printf("DibGetStream 2 Successfull\n"); } /** Attach frontend 2 to Stream 2 **/ Status = DibAddFrontend(pContext, globalInfo.Stream[2], globalInfo.Frontend[2], NULL, 0); if (Status != DIBSTATUS_SUCCESS) { printf("DibAddFrontend Failed \n"); return -1; } else { printf("DibAddFrontend Successfull, Connect Frontend 2 to Stream 2\n"); } /** Attach frontend 3 to Stream 2 **/ Status = DibAddFrontend(pContext, globalInfo.Stream[2], globalInfo.Frontend[3], NULL, 0); if (Status != DIBSTATUS_SUCCESS) { printf("DibAddFrontend Failed \n"); return -1; } else { printf("DibAddFrontend Successfull, Connect Frontend 3 to Stream 2\n"); } /* Initialise tune parameters */ /** Physical Layer **/ ChDesc.Type = eSTANDARD_ISDBT; ChDesc.ChannelDescriptor.Bw = eCOFDM_BW_6_0_MHZ; /** Common Parameters **/ ChDesc.ChannelDescriptor.RFkHz = Frequency; ChDesc.ChannelDescriptor.InvSpec = eDIB_SPECTRUM_AUTO; /** ISDBT Parameters **/ ChDesc.ChannelDescriptor.Std.Isdbt.Nfft = eDIB_FFT_AUTO; ChDesc.ChannelDescriptor.Std.Isdbt.Guard = eDIB_GUARD_INTERVAL_AUTO; /*** Partial Reception = AUTO ***/ ChDesc.ChannelDescriptor.Std.Isdbt.PartialReception = -1; /*** Disable SB mode ***/ ChDesc.ChannelDescriptor.Std.Isdbt.SbMode = 0; ChDesc.ChannelDescriptor.Std.Isdbt.SbConnTotalSeg = -1; ChDesc.ChannelDescriptor.Std.Isdbt.SbWantedSeg = -1; ChDesc.ChannelDescriptor.Std.Isdbt.SbSubchannel = -1; /*** Initialize Layers ***/ for (i=0;i<3;i++) { ChDesc.ChannelDescriptor.Std.Isdbt.layer[i].NbSegments = -1; ChDesc.ChannelDescriptor.Std.Isdbt.layer[i].Constellation = eDIB_QAM_AUTO; ChDesc.ChannelDescriptor.Std.Isdbt.layer[i].CodeRate = eDIB_VIT_CODERATE_AUTO; ChDesc.ChannelDescriptor.Std.Isdbt.layer[i].TimeIntlv = -1; } /* Create, initialise a channel and tune on specified frequency */ Status = DibGetChannelEx(pContext, globalInfo.Stream[2], &ChDesc, &DibChannelHdl2, NULL, NULL); if ( (Status == DIBSTATUS_SUCCESS) && (ChDesc.ChannelDescriptor.ScanStatus == DIB_SCAN_SUCCESS)) { printf("Tune Stream 2 (Fe 2 & Fe 3) Successfull\n"); return DIBSTATUS_SUCCESS; } else { printf("Tune Stream 2 Failed \n"); return DIBSTATUS_ERROR; } }