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; }
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; }
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; }
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; }