Приложение h
Файл Searcher.h
#ifndef _searcher_h_
#define _searcher_h_
#include "Complex.h"
#include "Satellites.h"
#include "File.h"
struct ItemSearcher {
int count;
ComplexD phase, sum;
int counter, bitCount, bitSkip;
double bitZnak;
int flag, countFft;
double freq;
ComplexD iq;
int bitPos, bit;
int preaFind, preaPos;
ItemSearcher(): count(0), flag(0), countFft(0), freq(0), phase(1), sum(0), counter(0),
bitCount(0), bitSkip(0), bitZnak(0), preaFind(0), preaPos(0) {}
};
Gnss::Satellites satellites(Gnss::Satellites::Locate());
class Searcher
{
public:
Searcher(int sv);
~Searcher(void);
/*double searchSput(vector<float> cor, double tr, int caLen, int sample,
int coherency); //функция поиска спутника
double Correlation(vector<float> res_dop,
vector<float> templ); //функция корреляции сигналов */
double Tuner(fftwf_complex dataIn);//функция поиска Допл.сдвига
void GetCAcode(float* cacode);//функция генерации СА-кода. Num - код спутника
ItemSearcher GetItem(void);
void Corr(Complex32* signalPh, ComplexD* signalCor, int sv);
int svId, system;
private:
ItemSearcher item;
Gnss::Satellites& satellites;
};
void Mult(Complex16 in1[], Complex16 in2[], Complex32 out[], int count);
int RawDoppler(Complex16* inData, const int lim, const int precision, int pos, int sv);
void searchSput(ComplexD inData[], const float qual, const int caLen,
const int sample, ComplexD cor[]);
//void CalcFFT(Complex16* fftData, ComplexD* fftRes, int N);
//static int* CA = satellite.Code(); //генерируем СА код
const double pi = 3.1415926535897932384626433832795;
const double е = 2.7182818284590452354;
const int bitDuration = 20; // длина бита
const int sfDuration = 300; // длина подкадра
const int caLen = 1023; // длительность СА кода
const int periods = 10;
const int sample = 2; // количество сэмплов на элемент СА кода
const int signal_length = sample*caLen*(periods + 1);
const double deltaT = 2*pi*pow(10,-3)/( sample * caLen );
const int threshold = 3*pow(10,4);
const double tr = 0.75;
const int lim = 4e1; // в герцах
const int precision = 4e3; // в герцах
const float qual = 50; //в процентах
int doppler;
int pos;
Complex32 FFTSignal[signal_length];
int N = 1;
float phase[signal_length];
Complex32 signalPh[signal_length];
ComplexD signalCor[signal_length];
Complex32 resDop[signal_length];
ComplexD SignalOUT[caLen*sample];
float Signal[caLen*sample];
fftwf_complex* in1 = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex)* signal_length);
#endif
