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;
   }
}
Esempio n. 2
0
	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;
   }
}