Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет НИР_Боронин_6_М.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
546 Кб
Скачать
☆

Приложение 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