예제 #1
0
파일: sine.cpp 프로젝트: PaulJing/Sora
ISource* CreateGraph () {
   	CREATE_BRICK_SINK  (msink, TModSink, sine );
	CREATE_BRICK_FILTER (pack, TPackSample16to8, sine, msink );
	typedef TSine<2000, 0, 8000, 40000> TSine1MHz;
	CREATE_BRICK_SOURCE (ssine, TSine1MHz::Source, sine, pack );

	return ssine;
}
예제 #2
0
static inline
FINL ISource* CreateCCAGraph11a()
{
	CREATE_BRICK_SINK(drop, TDropAny, BrickTestCtx);

	CREATE_BRICK_FILTER(dcest, TDCEstimator, BrickTestCtx, drop);
	CREATE_BRICK_FILTER(cca, TCCA11a, BrickTestCtx, dcest);
	CREATE_BRICK_FILTER(dc, TDCRemoveEx<4>::Filter, BrickTestCtx, cca);


	// Skip CCA here as we test the receiver with dummy input
	CREATE_BRICK_FILTER(ds2, TDownSample2, BrickTestCtx, dc);


	typedef PerfEvalSource<COMPLEX16, 8> PerfEvalSourceTX;
	CREATE_BRICK_SOURCE(RX, PerfEvalSourceTX::source, BrickTestCtx, ds2);

	return RX;
}
예제 #3
0
static inline
FINL ISource* CreateDemodGraph11a_48()
{
	CREATE_BRICK_SINK(drop, TDropAny, BrickTestCtx);

	//CREATE_BRICK_SINK   (fsink, TBB11aFrameSink, BrickTestCtx );	
	CREATE_BRICK_FILTER(desc, T11aDesc, BrickTestCtx, drop);

	// Single thread test here
	typedef T11aViterbi <5000 * 8, 48, 256> T11aViterbiComm;
	//CREATE_BRICK_FILTER(viterbi, T11aViterbiComm::Filter, BrickTestCtx, desc);
	//CREATE_BRICK_FILTER(vit0, TThreadSeparator<>::Filter, BrickTestCtx, viterbi);
	CREATE_BRICK_FILTER (vit0, T11aViterbiComm::Filter,	BrickTestCtx, desc );				


	// 48M
	CREATE_BRICK_FILTER(di48, T11aDeinterleaveQAM64, BrickTestCtx, vit0);
	CREATE_BRICK_FILTER(dm48, T11aDemapQAM64::filter, BrickTestCtx, di48);

	CREATE_BRICK_FILTER(pilot, TPilotTrack, BrickTestCtx, dm48);


	CREATE_BRICK_FILTER(pcomp, TPhaseCompensate, BrickTestCtx, pilot);
	CREATE_BRICK_FILTER(chequ, TChannelEqualization, BrickTestCtx, pcomp);
	CREATE_BRICK_FILTER(fft, TFFT64, BrickTestCtx, chequ);
	CREATE_BRICK_FILTER(fcomp, TFreqCompensation, BrickTestCtx, fft);
	CREATE_BRICK_FILTER(dsym, T11aDataSymbol, BrickTestCtx, fcomp);
	CREATE_BRICK_FILTER(dsym0, TNoInline, BrickTestCtx, dsym);


	// Skip CCA here as we test the receiver with dummy input
	// CREATE_BRICK_FILTER (ds2, TDownSample2, BrickTestCtx, rxswt );
	CREATE_BRICK_FILTER(ds2, TDownSample2, BrickTestCtx, dsym0);


	typedef PerfEvalSource<COMPLEX16, 8> PerfEvalSourceTX;
	CREATE_BRICK_SOURCE(RX, PerfEvalSourceTX::source, BrickTestCtx, ds2);

	return RX;
}
예제 #4
0
static inline
FINL ISource* CreateDemodGraph11a_48_p(ISource*& svit)
{
    CREATE_BRICK_SINK(drop, TDropAny, BrickTestCtx);

    //CREATE_BRICK_SINK   (fsink, TBB11aFrameSink, BrickTestCtx );
    CREATE_BRICK_FILTER(desc, T11aDesc, BrickTestCtx, drop);

    // Single thread test here
    typedef T11aViterbi <5000 * 8, 48, 256> T11aViterbiComm;
    CREATE_BRICK_FILTER(viterbi, T11aViterbiComm::Filter, BrickTestCtx, desc);
    CREATE_BRICK_FILTER(vit0, TThreadSeparator<>::Filter, BrickTestCtx, viterbi);
    //CREATE_BRICK_FILTER (vit0, T11aViterbiComm::Filter,	BrickTestCtx, desc );


    // 48M
    CREATE_BRICK_FILTER(di48, T11aDeinterleaveQAM64, BrickTestCtx, vit0);
    CREATE_BRICK_FILTER(dm48, T11aDemapQAM64::filter, BrickTestCtx, di48);

    CREATE_BRICK_FILTER(pilot, TPilotTrack, BrickTestCtx, dm48);


    CREATE_BRICK_FILTER(pcomp, TPhaseCompensate, BrickTestCtx, pilot);
    CREATE_BRICK_FILTER(chequ, TChannelEqualization, BrickTestCtx, pcomp);
    CREATE_BRICK_FILTER(fft, TFFT64, BrickTestCtx, chequ);
    CREATE_BRICK_FILTER(fcomp, TFreqCompensation, BrickTestCtx, fft);
    CREATE_BRICK_FILTER(dsym, T11aDataSymbol, BrickTestCtx, fcomp);
    CREATE_BRICK_FILTER(dsym0, TNoInline, BrickTestCtx, dsym);

    // LTS path
    //	CREATE_BRICK_FILTER (fcfo,  TFineCFOEst, BrickTestCtx, drop );
    //	CREATE_BRICK_FILTER (chest, TChannelEst, BrickTestCtx, fcfo );
    //	CREATE_BRICK_FILTER (lsym,  T11aLTSymbol, BrickTestCtx, chest );


    // No LTS in this test
    // CREATE_BRICK_SINK (lsym,	T11aLTS, BrickTestCtx );
    //CREATE_BRICK_DEMUX2 (symsel, T11aSymSelEx::Filter, BrickTestCtx, lsym, dsym0 );

    /* no CCA here
    CREATE_BRICK_FILTER (dcest, TDCEstimator, BrickTestCtx, drop );
    CREATE_BRICK_FILTER (cca,   TCCA11a,      BrickTestCtx, dcest );
    CREATE_BRICK_FILTER (dc,    TDCRemoveEx<4>::Filter, BrickTestCtx, cca );
    CREATE_BRICK_SOURCE (dummy, TDummySource, BrickTestCtx, cca );
    srcCarrierSense = dummy;

    CREATE_BRICK_DEMUX2 ( rxswt, TBB11bRxSwitch, BrickTestCtx,
    dc, symsel);
    */

    // Skip CCA here as we test the receiver with dummy input
    // CREATE_BRICK_FILTER (ds2, TDownSample2, BrickTestCtx, rxswt );
    CREATE_BRICK_FILTER(ds2, TDownSample2, BrickTestCtx, dsym0);


    typedef PerfEvalSource<COMPLEX16, 8> PerfEvalSourceTX;
    CREATE_BRICK_SOURCE(RX, PerfEvalSourceTX::source, BrickTestCtx, ds2);


    svit = vit0;

    return RX;
}