--- rawreader/src/Read.cpp 2006/12/10 12:52:45 1.3 +++ rawreader/src/Read.cpp 2006/12/10 13:05:56 1.4 @@ -6,10 +6,14 @@ short int CRC(int []); int restrict(int [], long long int[], int); -extern char database[80]; -extern char MYSQL[80]; +extern char database[120]; +extern char MYSQL[120]; extern int print_flag; +int route_good1=0, route_good2=0, route_good3=0; +int pack_good1=0, pack_good2=0, pack_good3=0; +int number_good1=0, number_good2=0, number_good3=0; + void read(char fni[], char fno[], char INF[], char protocol[], char path[], char name[], char nnnnn_TMP[], float quality[], int real_route[], int &Rcount) { @@ -20,14 +24,14 @@ char buf[1024]; // char stop1; char ch1,ch2,ch3,ch, ch4[80], ch5[5]; - char file_route[80]; /*protocol binary filesm nnnnn_mmm_xxx_cln1Er.log*/ - char miss_file[80]; /*protocol files nnnnn_mmm_xxx_mis_cln1.dat*/ - char cln1_file[80]; /*route binary data files nnnnn_mmm_xxx_cln1.pam*/ - char cln1_kadr[80]; /*route binary data files nnnnn_mmm_xxx_cln1.bin*/ - char log_kadr[80]; /*log binary data files nnnnn_mmm_xxx_cln1.log*/ - char log_route[80]; /*log binary file for number of routes*/ + char file_route[100]; /*protocol binary filesm nnnnn_mmm_xxx_cln1Er.log*/ + char miss_file[100]; /*protocol files nnnnn_mmm_xxx_mis_cln1.dat*/ + char cln1_file[100]; /*route binary data files nnnnn_mmm_xxx_cln1.pam*/ + char cln1_kadr[100]; /*route binary data files nnnnn_mmm_xxx_cln1.bin*/ + char log_kadr[100]; /*log binary data files nnnnn_mmm_xxx_cln1.log*/ + char log_route[100]; /*log binary file for number of routes*/ char Short_Buf[8], Name_Buf[4]; - char temp[10], temp1[80], connection[80], command[80], name11[80]; + char temp[10], temp1[80], connection[120], command[80], name11[80]; short int CalcCheckSum; int LenthBuf=1015, flag_help=0; @@ -49,8 +53,8 @@ long long int icount_total=0; /* Total number of bytes*/ long long int packet_first[100];/* First cadre number for each route*/ long long int packet_last[100]; /* Second cadre number for each route*/ - long int count_missed[100]; /* Number of missed cadres in each route*/ - long int count_sec_missed[100]; + long long int count_missed[100];/* Number of missed cadres in each route*/ + long long int count_sec_missed[100]; unsigned long long int count_ident[100]; /* Number of good bytes in each route*/ unsigned long long int count_tot[100]; /* Total number of bytes in each route*/ int NumRout[1000]; /* Number of route*/ @@ -63,9 +67,7 @@ int adr2=0; /* Last byte of cadre in cln2.bin*/ int tmp=0; int numPack[4]; /* Number of cadre in given route*/ - int good_pack=0; - long long int good_number=0; - int good_route=0; + int adress[4]; int R_er[100]; /* Route errors number in given route*/ int R_er_interf1[100]; /* Interface Route error at the begining of the route*/ @@ -84,7 +86,10 @@ int flag_CRC_cor[3]; /* Flag for CRC error correction*/ int flag_tr[3]; /* Truncate flag*/ short int flags; /* Number for all errors*/ - + int num_rows=0; + int control[1]; + control[0]=0; + control[1]=0; for (j=0; j<4; j++) {adress[j]=0; numPack[j]=0;} for (j=0; j<1024; j++) {buffer1[j]=0; buffer2[j]=0; buffer3[j]=0;} @@ -114,33 +119,34 @@ strcpy(connection,MYSQL); strcat(connection,database); - TSQLServer *sqlServer = TSQLServer::Connect(connection, "pamelaprod", "rawprod"); + TSQLServer *sqlServer = TSQLServer::Connect(connection,"pamelaprod","rawprod"); + if (sqlServer==0) {cerr<<"can not connect with MYSQL sever\n"; exit(1);} // open input file "nnnnnmmm.pam" - fin.open(fni, ifstream::binary); - if(fin.good()==0) {cerr<<"can not open input file"; exit(0);} + fin.open(fni, ifstream::binary); + if(fin.good()==0) {cerr<<"can not open input file"; exit(1);} //open output file "nnnnnmmm_work.dat" fout=fopen(fno, "wb"); - if(fout==0) {cerr<<"can not open work file"; exit(0);} + if(fout==0) {cerr<<"can not open work file"; exit(1);} strcpy(ch5,"info"); strcpy(ch4,fno); for(i=0;i<4;i++){ch4[strlen(ch4)-8+i]=ch5[i];} // open input file "nnnnnmmm_info.dat" fo_info.open(ch4, ifstream::binary); - if(fo_info.good()==0) {cerr<<"can not open info file"; exit(0);} + if(fo_info.good()==0) {cerr<<"can not open info file"; exit(1);} //open output file "nnnnnmmm_protocol.txt" fo=fopen(protocol, "wb"); - if(fo==0) {cerr<<"can not open protocol file"; exit(0);} + if(fo==0) {cerr<<"can not open protocol file"; exit(1);} //open output file "nnnnnmmm_route.log" strncpy(log_route,INF,strlen(INF)-9); log_route[strlen(INF)-9]='\0'; strcat(log_route,"_route.log"); fo_route=fopen(log_route, "wb"); - if(fo_route==0) {cerr<<"can not open file for routes number"; exit(0);} + if(fo_route==0) {cerr<<"can not open file for routes number"; exit(1);} ///////////////////////////////////////////////////////////////// // cin>>stop1; - k=0; + k=0; while(fin.eof()==0) { counter=0; //pounter for position of cadre truncation @@ -163,20 +169,24 @@ count_ident[Rcount-1]+=8; count_tot[Rcount-1]+=8; while((ch1!=(char)(CODE1)&&ch2!=(char)(CODE2)&& - (N1==0||buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])||buffer3[3]!=(int)(unsigned char)(Short_Buf[0]))) + (N1==0||(buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])||buffer3[3]!=(int)(unsigned char)(Short_Buf[0])))) || (ch2!=(char)(CODE2)&&ch3!=(char)(CODE3)&&(buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])||(numP[2]+1)!=tmpP)) || - (ch3!=(char)(CODE3)&&ch1!=(char)(CODE1)&&((numP[2]+1)!=tmpP||buffer3[1023]!=(int)(unsigned char)(Short_Buf[4]))) + (ch3!=(char)(CODE3)&&ch1!=(char)(CODE1)&&(buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])|| + (buffer3[5]!=(int)(unsigned char)(Short_Buf[2])&& buffer3[6]!=(int)(unsigned char)(Short_Buf[3])))) || (ch1!=(char)(CODE1)&& - (buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])||buffer3[3]!=(int)(unsigned char)(Short_Buf[0])||(numP[2]+1)!=tmpP)) + (buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])&& buffer3[3]!=(int)(unsigned char)(Short_Buf[0])&& + buffer3[5]!=(int)(unsigned char)(Short_Buf[2])&& buffer3[6]!=(int)(unsigned char)(Short_Buf[3]))) || (ch2!=(char)(CODE2)&& - (buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])||buffer3[3]!=(int)(unsigned char)(Short_Buf[0])||(numP[2]+1)!=tmpP)) + (buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])&& buffer3[3]!=(int)(unsigned char)(Short_Buf[0])&& + buffer3[5]!=(int)(unsigned char)(Short_Buf[2])&& buffer3[6]!=(int)(unsigned char)(Short_Buf[3]))) || (ch3!=(char)(CODE3)&& - (buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])||buffer3[3]!=(int)(unsigned char)(Short_Buf[0])||(numP[2]+1)!=tmpP)) + (buffer3[1023]!=(int)(unsigned char)(Short_Buf[4])&& buffer3[3]!=(int)(unsigned char)(Short_Buf[0])&& + buffer3[5]!=(int)(unsigned char)(Short_Buf[2])&& buffer3[6]!=(int)(unsigned char)(Short_Buf[3]))) || (ch1!=(char)(CODE1)&&ch2!=(char)(CODE2)&&ch3!=(char)(CODE3))) {fin.get(ch); @@ -196,9 +206,8 @@ fclose(fo); remove(protocol); remove(INF); - exit(0); + exit(1); } - /*****************************************************************/ /*********************data reading********************************/ fin.read(buf,LenthBuf); @@ -257,6 +266,7 @@ for (i=0; i<2; i++) {CRC_1[i]=CRC_1[2];} packet_first[Rcount-1]=numP[2]; + control[0]=0; control[1]=0; break; } default:{ @@ -294,9 +304,12 @@ CRC_0[2]=(int)(unsigned char)(Short_Buf[4]); for (i=0; i<2; i++) {CRC_1[i]=CRC_1[i+1];} CRC_1[2]=(int)(unsigned char)(ch); + control[0]=control[1]; + control[1]=0; } } - if (print_flag>0 && fmod(N1,10000)==0.) cout<0 && fmod(N1,10000)==0) cout<0 && !(N1%10000)) cout<0) - {cout<<" truncate counter="<=1) {Hex[2-i]=(int)(tmpP/(long int)(pow(256.,2-i))); tmpP=tmpP-(long int)pow(256.,2-i)*(int)(tmpP/(long int)(pow(256.,2-i)));}} - for (i=4;i<7;i++) (buffer2[i]=Hex[i-4]); +// for (i=4;i<7;i++) (buffer2[i]=Hex[i-4]); if (buffer2[1023]==(int)(CRC(buffer2))) flag_CRC_cor[1]=1; tmpP=numP[2]-1; @@ -357,7 +370,7 @@ {if (tmpP/(long int)(pow(256.,2-i))>=1) {Hex[2-i]=(int)(tmpP/(long int)(pow(256.,2-i))); tmpP=tmpP-(long int)pow(256.,2-i)*(int)(tmpP/(long int)(pow(256.,2-i)));}} - for (i=4;i<7;i++) (buffer2[i]=Hex[i-4]); +// for (i=4;i<7;i++) (buffer2[i]=Hex[i-4]); if (buffer2[1023]==(int)(CRC(buffer2))) flag_CRC_cor[1]=1; } ///////////////////////////////////////////////////////////////////// @@ -368,49 +381,57 @@ /**cadre number: 21 (22 17 18) 19 ******************************/ /**missed cadres: 21 20 19 18 17 ******************************/ if ((numP[1]numP[0]+1)&&(numP[1]0) cout<<"1) "<=numP[0]+1)&&(numP[1]numP[2]-1))&&(numP[2]-numP[0]>2)&& (buffer1[3]==buffer3[3])&&(buffer1[3]==buffer2[3])&&(flag_tr[1]==0)&& (flag_pack[2]==0)&&(flag_pack[1]==1)&&(flag_pack[0]==0)) {Mis_group[Rcount-1]+=1; - fprintf(foMiss,"3) %9lli%9lli -1\n",numP[0]+1,numP[2]-1); + fprintf(foMiss,"2) %9lli%9lli\n",numP[0]+1,numP[2]-1); + if (print_flag>0) cout<<"2) "<numP[2]-1))&&((numP[2]-numP[0])==2)&& + (buffer1[3]==buffer3[3])&&(buffer1[3]==buffer2[3])&&(flag_tr[1]==0)) + {control[1]=1;} + /**route number: (10 10 10) 10 10 ******************************/ + /**cadre number: (11 15 16) 17 18 ******************************/ + /**missed kadrs: 12 13 14 ******************************/ + else if ((numP[1]>numP[0]+1)&&(numP[1]<=numP[2]-1)&&(buffer1[3]==buffer3[3])&&(buffer1[3]==buffer2[3])&& + (flag_tr[1]==0)&&(flag_pack[2]==0)&&(flag_pack[1]==0)&&(flag_pack[0]==0)&&(control[0]==0)) + {Mis_group[Rcount-1]+=1; + fprintf(foMiss,"3) %9lli%9lli\n",numP[0]+1,numP[1]-1); + if (print_flag>0) cout<<"3) "<1)&&(abs(numP[2]-good_pack-2)>abs(Num_kadrs[Rcount-1]-good_number))&& - (buffer2[3]==good_route)&&(flag_tr[2]==0)&&(flag_pack[2]==0)) - {Mis_group[Rcount-1]+=1; - count_missed[Rcount-1]+=abs(numP[2]-good_pack)-1; - fprintf(foMiss,"4) %9i%9lli number of missed cadres=%i\n", good_pack, numP[2], abs(numP[2]-good_pack)-1); - } + /**number of missed cadres: 10 ******************************/ + else if ((N1>2)&&(abs(numP[1]-pack_good3)>abs(Num_kadrs[Rcount-1]-number_good3-1))&& + (buffer2[3]==route_good3)&&(flag_tr[2]==0)&&(flag_pack[2]==0)&&(numP[2]>numP[0]+2)&&(control[0]==0)) + {Mis_group[Rcount-1]+=1; + if (pack_good30) cout<<"P1="<3)&&(numP[1]!=numP[0]+1)&&(numP[1]<10))|| - ((buffer1[3]!=buffer2[3])&&(buffer2[3]==buffer3[3])&&(buffer1[3]!=0)&&(numP[1]!=numP[0]+1)&&(numP[1]<10))|| + ((buffer1[3]!=buffer2[3])&&(buffer2[3]==buffer3[3])&&(buffer1[3]!=0)&&(numP[1]!=numP[0]+1)&&(numP[1]<10)&& + (flag_pack[0]==0)&&(flag_pack[1]==0))|| ((numP[2]==numP[1]+1)&&(numP[1]==0)&&(Num_kadrs[Rcount-1]>1000000)) ) {Rcount+=1; packet_last[Rcount-2]=numP[0]; @@ -573,7 +606,7 @@ pow((float)(2*flag_CRC_cor[1]),6)); fprintf(foRout,"%1c%1c%1c%1c",(char)(buffer2[4]), (char)(buffer2[5]),(char)(buffer2[6]),(char)(flags)); - fo_info<<"CRC error in cadre "<0) cout<0) cout<Query(oss.str().c_str()); Num_good_kadrs[i]=Num_kadrs[i]-Num_bad_kadrs[i]; @@ -706,12 +738,13 @@ fprintf(fo," total size of route=%lli bytes;\n",count_tot[i]); fprintf(fo,"first cadre number= %lli:", packet_first[i]); fprintf(fo," last cadre number= %lli:", packet_last[i]); - fprintf(fo," Number of missed cadres= %lli:\n", count_missed[i]); + fprintf(fo," Number of missed cadres= %lli: Number of double transmitted cadres= %lli\n", + count_missed[i], count_sec_missed[i]); fprintf(fo,"number of identified cadres=%lli: quality index=%f: completness=%f \n", Num_kadrs[i], quality[i], first_missed[i]); } - //***route's number log file************************************** + //***route number log file************************************** for (i=0;i