%--- Include folders with functions --------------------------------------- addpath include % The software receiver functions addpath geoFunctions % Position calculation related functions %% Clean up the environment first ========================================= %%clc; close all; % format ('compact'); format ('long', 'g');clc %--- Include folders with functions --------------------------------------- addpath include fprintf('-------------------------------\n\n'); %% Initialize the setting global settings; settings = initSettings_IQ(); disp(' '); fprintf('Probing data (%s)...\n', settings.fileName) [fid, message] = fopen(settings.fileName, 'rb'); %% Acquisition ============================================================ fseek(fid, settings.skipNumberOfBytes, 'bof'); tmp = fread(fid, 2*11*settings.samplesPerCode, settings.dataType)'; %tmp=tmp-127.5; data=tmp(1:2:end)+1i*tmp(2:2:end); hist(tmp(1:2:end),20); grid on; xlabel('Bin'); ylabel('Number in Bin'); %--- Do the acquisition ------------------------------------------- disp ('Acquiring satellites...'); acqResults = acquisitionIQ(data, settings); %acqResults = acquisitionIQ_weak(data, settings); plotAcquisition(acqResults); % acqResults.carrFreq(1)=-1e3; % acqResults.codePhase(1)=1; % acqResults.peakMetric(1)=2; % plotAcquisition(acqResults); settings.numberOfChannels = min([settings.numberOfChannels, sum(acqResults.peakMetric > settings.acqThreshold)]); if (any(acqResults.peakMetric > settings.acqThreshold)) channel = preRun(acqResults, settings); % channel(1).PRN=1; % channel(1).acquiredFreq=acqResults.carrFreq(1); % channel(1).codePhase=acqResults.codePhase(1); % channel(1).status='T'; % settings.numberOfChannels=1; showChannelStatus(channel, settings); else % No satellites to track, exit disp('No GNSS signals detected, signal processing finished.'); trackResults = []; fclose(fid); return; end %% Track the signal ======================================================= startTime = now; disp ([' Tracking started at ', datestr(startTime)]); for cidx=1:size(channel,2) if channel(cidx).acquiredFreq >settings.samplingFreq/2; channel(cidx).acquiredFreq=channel(cidx).acquiredFreq-settings.samplingFreq; end; end; showChannelStatus(channel, settings); %channel.codePhase=3351 ; [trackResults, channel] = tracking_V0_IQ(fid, channel, settings); % Close the data file if fid>0 fclose(fid); end; disp([' Tracking is over (elapsed time ', ... datestr(now - startTime, 13), ')']) % Auto save the acquisition & tracking results to a file to allow % running the positioning solution afterwards. disp(' Saving Acq & Tracking results to file "trackingResults.mat"') save('trackingResults', ... 'trackResults', 'settings', 'acqResults', 'channel'); %% Calculate navigation solutions ========================================= disp(' Calculating navigation solutions...'); navSolutions = postNavigation0(trackResults, settings); %navSolutions = postNavigationSnapshot(trackResults, settings); disp(' Processing is complete for this data block'); %% Plot all results =================================================== disp (' Ploting results...'); if settings.plotTracking plotTracking(1:settings.numberOfChannels, trackResults, settings); end plotNavigation(navSolutions, settings); disp('Post processing of the signal is over.');