www.pudn.com > WCDMA.rar > hannelClass.h


// hannelClass.h: interface for the ChannelClass class. 
// 
// Copyright 2002 The Mobile and Portable Radio Research Group 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_HANNELCLASS_H__BEEB3F69_9D69_4539_9C54_BF3E8E522386__INCLUDED_) 
#define AFX_HANNELCLASS_H__BEEB3F69_9D69_4539_9C54_BF3E8E522386__INCLUDED_ 
 
//#include "Complex.h"	// Added by ClassView 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#define SWAP(a,b) temp = (a); (a) = (b); (b) = temp 
#define TWO_PI 6.28318530717959 
#define SPEED_OF_LIGHT 3e8 
#define FREQUENCY 1980 
#define CHIPS_PER_FRAME 38400 
#define FRAME_DURATION 10e-3 
#define FADE_SIGNAL_LENGTH	65536 
#define FADE_SAMPLE_RATE	9600.00 
#define CHIPS_PER_FADE_SAMPLES 400 
#define ROOT2 1.41421356237310 
 
 
class ChannelClass   
{ 
public: 
	unsigned MultipathSignalLength; 
	void NoiseGenerator(); 
	void Combiner(ComplexNumber *OtherSignal); 
	unsigned long SamplesPerChip; 
	void MpathProcessor(ComplexNumber *PrevSignal,ComplexNumber *CurSignal, 
					    ComplexNumber *NextSignal,unsigned SignalLength); 
	ComplexNumber *MultipathSignal; 
	ChannelClass(SimConfigClass Config, ModulatorClass *Modulator, TransmitterClass *Tx); 
	ChannelClass(); 
	virtual ~ChannelClass(); 
 
private: 
	unsigned PulseLength; 
	unsigned FadeSamplesPerFrame; 
	void FadingProcessor(); 
	ComplexNumber * MultiPathChannel(ComplexNumber *SigLastptr,ComplexNumber *SigCurrentptr, 
 								     ComplexNumber *SigNextptr, unsigned long SignalLength); 
	ComplexNumber **FadingSignals; 
	double PolynomialFit(double *Xdata,double *Ydata,unsigned N,double x,double *error); 
	ComplexNumber *Radix2FFT(ComplexNumber *data, unsigned NN, int isign); 
	unsigned FadingSignalOffset; 
	unsigned MultiPathComponents; 
	unsigned *Delays; 
	double *Amplitudes; 
	double fDoppler; 
	double EbNo_dB; 
	double EbNo; 
	double NoiseSTDV; 
	bool FadeInitFlag; 
	ComplexNumber * RaylieghFadingGenerator( double FDoppler, double FSample, unsigned long NSamples); 
	ComplexNumber GaussianRandomNumberGenerator(int *InitFlag); 
	double UniformRandomNumberGenerator(int *idum); 
}; 
 
#endif // !defined(AFX_HANNELCLASS_H__BEEB3F69_9D69_4539_9C54_BF3E8E522386__INCLUDED_)