this pgm of mine should loop codeperiod(37000 in this case) no. of times. However its doin it for just 3 times. Pls help. Also i think there is an exception arising somewer in my pgm nd i need to write a try-catch but dont know wat statements to write within tat. Somebody pls help me out.
Thanks,
prads
Expand|Select|Wrap|Line Numbers
- for(loopcnt=0;loopcnt<codeperiods;loopcnt++)// what is codeperiods..37000 ???
- {
- ///////////////U HAVE TO WRITE THE TRY-CATCH HERE!......... IF IM NOT WRONG......... /////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////
- //=========================================GUI update =========================================
- /*if((loopcnt%50)==0)
- throw loopcnt;
- {
- try
- {
- cout<<"tracking channel "<<channelnr<<"of "<<settings.noofchannels <<"PRN# "<<channel[channelnr].prn<<endl;
- }
- catch(int expp)
- {
- cerr<<"Exceptional error occured...exiting..."<<endl;
- exit(1);
- }
- }// end of if(loopcnt%50==0) */
- //==========================Read Next Block Of Data =========================================
- codephasestep = codefreq / settings.samplingfreq;
- blksize = ceil((settings.codelength-remcodephase) / codephasestep);
- //allocate memory to the buffer
- rawsignal = new char[blksize];
- acq_data.read (rawsignal,blksize);
- samplesread=acq_data.gcount();
- cout<<"samplesread ="<<samplesread;
- //cout.write(rawsignal,20);
- // system("pause");
- // **************************LOOK HERE ************************
- //rawsignal=rawsignal transpose /////How to do this
- // cout<<"hi hello";
- if(samplesread!=blksize)
- {
- cout<<"Not able to read the specified number of samples for tracking, exiting!"<<endl;
- acq_data.close();
- //cout.write (rawsignal,blksize);
- delete[] rawsignal;
- exit(2);
- }
- //==========================Set up all the code phase tracking information=======================================
- //Define index into early code vector
- for(tcode=remcodephase-earlylatespc;tcode<=((blksize-0.99)*codephasestep+remcodephase-earlylatespc);)
- {
- tcode2=ceil(tcode)+1;
- //shud i allocate memory for earlycode[] ??? earlycode[] etc not declared!!!!!
- earlycode[i_ecode]=cacode[tcode2-1]; //check here later coz may be u should make it cacode[tcode2-1];
- i_ecode+=1;
- //count1+=1;
- tcode=tcode+codephasestep;
- }
- //Define index into late code vector
- for(tcode=remcodephase+earlylatespc;tcode<=((blksize-0.99)*codephasestep+remcodephase+earlylatespc);)
- {
- tcode2=ceil(tcode)+1;
- latecode[i_lcode]=cacode[tcode2-1]; //check here later coz may be u should make it cacode[tcode2-1];
- i_lcode+=1;
- //count2+=1;
- tcode=tcode+codephasestep;
- //cout<<"count2 is"<<count2;
- }
- //Define index into prompt code vector
- for(tcode=remcodephase;tcode<=((blksize-0.99)*codephasestep+remcodephase);)
- {
- // ptcode[i_tcode]=tcode;
- tcode2=ceil(tcode)+1;
- promptcode[i_pcode]=cacode[tcode2-1]; //check here later coz may be u should make it cacode[tcode2-1];
- i_pcode+=1;
- // count3+=1; //to check no of iterations
- //i_tcode+=1;
- tcode=tcode+codephasestep;
- //cout<<"tcodes are"<<tcode<<endl;
- //cout<<"count3 is"<<count3;
- //cout<<"hey";
- }
- // remcodephase = (ptcode[blksize-1] + codephasestep) - 1023.0; // taken as ptcode[] instead of tcode[]
- remcodephase=tcode-1023; //He wants the last term
- cout<<"r is"<<remcodephase<<endl;
- //========================Generate the carrier frequency to mix the signal to baseband===================================
- for(i_time=0;i_time<=blksize;i_time++) //blksize-1??????
- {
- time[i_time]= i_time/settings.samplingfreq; // is time[] reqd???
- trigarg[i_time]=((carrfreq*2*PI)*time[i_time]) + remcarrphase;
- }
- //remcarrphase=trigarg[blksize]%(2*PI);
- remcarrphase= trigarg[blksize]-(trigarg[blksize]/(2*PI)) *(2*PI);
- for(i_trigarg=0;i_trigarg<=blksize-1;i_trigarg++) //blksize-1??? //changed from 0:blksize-1 to 0:blksize
- {
- carrcos[i_trigarg]=cos(trigarg[i_trigarg]);
- carrsin[i_trigarg]=sin(trigarg[i_trigarg]);
- }
- //======================== Generate the six standard accumulated values ===================================
- for(i_trigarg=0;i_trigarg<=blksize-1;i_trigarg++) //blksize-1???
- {
- // multipying locally generated carrier and code with the incoming signal....integrate and dump
- qbasebandsignal[i_trigarg]=carrcos[i_trigarg]*rawsignal[i_trigarg]; // rawsignal[]....2d ???????
- ibasebandsignal[i_trigarg]=carrsin[i_trigarg]*rawsignal[i_trigarg];
- temp1[i_trigarg]=earlycode[i_trigarg]*ibasebandsignal[i_trigarg];
- i_e=i_e+temp1[i_trigarg];
- temp2[i_trigarg]=earlycode[i_trigarg]*qbasebandsignal[i_trigarg];
- q_e=q_e+temp2[i_trigarg];
- temp3[i_trigarg]=promptcode[i_trigarg]*ibasebandsignal[i_trigarg];
- i_p=i_p+temp3[i_trigarg];
- temp4[i_trigarg]=promptcode[i_trigarg]*qbasebandsignal[i_trigarg];
- q_p=q_p+temp4[i_trigarg];
- temp5[i_trigarg]=latecode[i_trigarg]*ibasebandsignal[i_trigarg];
- i_l=i_l+temp5[i_trigarg];
- temp6[i_trigarg]=latecode[i_trigarg]*qbasebandsignal[i_trigarg];
- q_l=q_l+temp6[i_trigarg];
- }
- //================== Find PLL error and update carrier NCO ==================================
- carrerror=atan((q_p/i_p)/(2*PI));
- carrnco=oldcarrnco+(taucarr[1]/taucarr[0])*(carrerror-oldcarrerror)+(carrerror*(pdicarr/taucarr[0]));
- oldcarrnco=carrnco;
- oldcarrerror=carrerror;
- carrfreq=carrfreqbasis+carrnco;
- trackresults[channelnr].carrfreq[loopcnt]=carrfreq;
- //======================== Find DLL error and update code NCO ==================================
- num_codeerror=(sqrt(pow(i_e,2)+pow(q_e,2))- sqrt(pow(i_l,2)+pow(q_l,2)));
- den_codeerror=(sqrt(pow(i_e,2)+pow(q_e,2))+ sqrt(pow(i_l,2)+pow(q_l,2)));
- codeerror=num_codeerror/den_codeerror;
- codenco=oldcodenco+(taucode[1]/taucode[0])*(codeerror-oldcodeerror)+(codeerror*(pdicode/taucode[0]));
- oldcodenco=codenco;
- oldcodeerror=codeerror;
- codefreq=settings.codefreqbasis-codenco;
- trackresults[channelnr].codefreq[loopcnt]=codefreq;
- //======================== Output the above calculated values==================================
- /*cout<<"remcodephase is"<<remcodephase<<endl;
- cout<<"remcarrphase is"<<remcarrphase<<endl;
- cout<<"I_E is"<<i_e<<endl;
- cout<<"I_P is"<<i_p<<endl;
- cout<<"I_L is"<<i_l<<endl;
- cout<<"Q_E is"<<q_e<<endl;
- cout<<"Q_P is"<<q_p<<endl;
- cout<<"Q_L is"<<q_l<<endl;
- cout<<"carrfreq is"<<carrfreq<<endl; */
- cout<<"c is"<<codefreq<<endl;
- //======================== Record various measures to show in postprocessing ==================================
- trackresults[channelnr].absolutesample[loopcnt]=acq_data.tellg();
- trackresults[channelnr].dlldiscr[loopcnt]=codeerror;
- trackresults[channelnr].dlldiscrfilt[loopcnt]=codenco;
- trackresults[channelnr].plldiscr[loopcnt]=carrerror;
- trackresults[channelnr].plldiscrfilt[loopcnt]=carrnco;
- trackresults[channelnr].i_e[loopcnt]=i_e;
- trackresults[channelnr].i_p[loopcnt]=i_p;
- trackresults[channelnr].i_l[loopcnt]=i_l;
- trackresults[channelnr].q_e[loopcnt]=q_e;
- trackresults[channelnr].q_p[loopcnt]=q_p;
- trackresults[channelnr].q_l[loopcnt]=q_l;
- } // end of for(loopcnt)