5 |
#include "CRC.h" |
#include "CRC.h" |
6 |
|
|
7 |
short int CRC_H(char [], char []); |
short int CRC_H(char [], char []); |
8 |
extern char MYSQL[80]; |
extern char MYSQL[120]; |
9 |
extern char database[80]; |
extern char database[120]; |
10 |
extern float YODA_flag; |
extern float YODA_flag; |
11 |
extern float transmit_flag; |
extern float transmit_flag; |
12 |
extern int print_flag; |
extern int print_flag; |
75 |
long int icount_int=0; /*Entire part of total file size in Kbytes*/ |
long int icount_int=0; /*Entire part of total file size in Kbytes*/ |
76 |
long int icount_frac=0; /*Fractional part of total file size*/ |
long int icount_frac=0; /*Fractional part of total file size*/ |
77 |
long int N1=0; /*Number of identified PAMELA packets*/ |
long int N1=0; /*Number of identified PAMELA packets*/ |
78 |
long int numP[3]; /*Packet numbers for previous packets*/ |
long int numP[3]; /*Packet numbers for previous packets*/ |
79 |
|
long int PackType[3]; /*Packet type for previous packets*/ |
80 |
long int LenP[3]; /*Packet length for previous packets*/ |
long int LenP[3]; /*Packet length for previous packets*/ |
81 |
unsigned long int time_p[3]; /*Packet time*/ |
unsigned long int time_p[3]; /*Packet time*/ |
82 |
unsigned long int time_max=0; |
unsigned long int time_max=0; |
83 |
unsigned long int time_min=0; |
unsigned long int time_min=0; |
84 |
|
int CLN2_END=0; |
85 |
long int pack_length=0; /*PAMELA packet length*/ |
long int pack_length=0; /*PAMELA packet length*/ |
86 |
long long int adr_first[3]; /*Start displacement from file begin*/ |
long long int adr_first[3]; /*Start displacement from file begin*/ |
87 |
long long int adr_last[3]; /*Finish displacement from file begin*/ |
long long int adr_last[3]; /*Finish displacement from file begin*/ |
100 |
strcpy(connection,MYSQL); |
strcpy(connection,MYSQL); |
101 |
strcat(connection,database); |
strcat(connection,database); |
102 |
TSQLServer *sqlServer = TSQLServer::Connect(connection, "pamelaprod", "rawprod"); |
TSQLServer *sqlServer = TSQLServer::Connect(connection, "pamelaprod", "rawprod"); |
103 |
|
if (sqlServer==0) {cerr<<"can not connect with MYSQL server\n"; exit(1);} |
104 |
oss.str(""); |
oss.str(""); |
105 |
oss<<"select * from FILES1"; |
oss<<"select * from FILES1"; |
106 |
TSQLResult *res1=sqlServer->Query(oss.str().c_str()); |
TSQLResult *res1=sqlServer->Query(oss.str().c_str()); |
134 |
{numP[i]=0; time_p[i]=0; CRC_Header[i]=0; CRC_bad_pack[i]=0; |
{numP[i]=0; time_p[i]=0; CRC_Header[i]=0; CRC_bad_pack[i]=0; |
135 |
flag_CRC_H[i]=0; flag_len[i]=0; flag_len_weak[i]=0; flag_pack[i]=0; flag_CRC_cor[i]=0; |
flag_CRC_H[i]=0; flag_len[i]=0; flag_len_weak[i]=0; flag_pack[i]=0; flag_CRC_cor[i]=0; |
136 |
flag_name[i]=0; flag_type[i]=0; flag_time[i]=0; |
flag_name[i]=0; flag_type[i]=0; flag_time[i]=0; |
137 |
LenP[i]=0; |
LenP[i]=0; PackType[i]=0; |
138 |
adr_first[i]=0; adr_last[i]=0; |
adr_first[i]=0; adr_last[i]=0; |
139 |
Hex[i]=0;} |
Hex[i]=0;} |
140 |
for (i=0; i<4; i++) {Byte_adr1[i]=0; Byte_adr2[i]=0;} |
for (i=0; i<4; i++) {Byte_adr1[i]=0; Byte_adr2[i]=0;} |
141 |
for (i=0; i<2; i++) temp[i]=0; |
for (i=0; i<2; i++) temp[i]=0; |
142 |
|
|
143 |
ifstream fin; |
ifstream fin; |
144 |
ofstream fo_pam, fo_work; |
ofstream fo_pam, fo_work; |
145 |
/**********************OPEN NECESSARY FILES************************/ |
/**********************OPEN NECESSARY FILES************************/ |
146 |
/******************************************************************/ |
/******************************************************************/ |
147 |
fin.open(fni, ios::binary); // open input file "nnnnn_mmm_xxx_cln1.pam" |
fin.open(fni, ios::binary); // open input file "nnnnn_mmm_xxx_cln1.pam" |
148 |
if(fin.good()==0) {cerr<<"can not open input file "<<fni<<"\n"; exit(1);} |
if(fin.good()==0) {cerr<<"can not open input file (Verify.cpp) "<<fni<<"\n"; exit(1);} |
149 |
|
|
150 |
fo_work.open(fno, ios::out); //open output help file "work.dat" |
fo_work.open(fno, ios::out); //open output help file "work.dat" |
151 |
if(!fo_work) {cerr<<"can not open outputfile"; exit(1);} |
if(!fo_work) {cerr<<"can not open outputfile"; exit(1);} |
186 |
256*(long int)(unsigned char)(Name_Buf[6])+ |
256*(long int)(unsigned char)(Name_Buf[6])+ |
187 |
256*256*(long int)(unsigned char)(Name_Buf[5]); |
256*256*(long int)(unsigned char)(Name_Buf[5]); |
188 |
|
|
|
if (N1==0) numP[2]=tmpP-1; //initial packet identification |
|
189 |
|
|
190 |
/******************packet type identification**********************/ |
/******************packet type identification**********************/ |
191 |
for (i=0;i<NumberPack;i++) |
for (i=0;i<NumberPack;i++) |
197 |
if ((num_type1==0)&&(num_type2!=0)) num_type=num_type2; |
if ((num_type1==0)&&(num_type2!=0)) num_type=num_type2; |
198 |
if ((num_type1!=0)&&(num_type2==0)) num_type=num_type1; |
if ((num_type1!=0)&&(num_type2==0)) num_type=num_type1; |
199 |
|
|
200 |
|
if (N1==0) |
201 |
|
{numP[2]=tmpP-1; //initial packet identification |
202 |
|
PackType[2]=num_type-1;} //initial packet type identification |
203 |
/////////////////////////////////////////////////////////////////// |
/////////////////////////////////////////////////////////////////// |
204 |
////////////////// PAMELA PACKET IDENTIFICATION//////////////////// |
////////////////// PAMELA PACKET IDENTIFICATION//////////////////// |
205 |
/////////////////////////////////////////////////////////////////// |
/////////////////////////////////////////////////////////////////// |
206 |
if (((int)(unsigned char)Name_Buf[0]==CODE_BYTE1&& |
if (((int)(unsigned char)Name_Buf[0]==CODE_BYTE1&&(tmpP==numP[2]+1)&&num_type!=0&&N1!=0)|| |
207 |
(tmpP==numP[2]+1)&&num_type!=0&&N1!=0)|| |
((int)(unsigned char)Name_Buf[1]==CODE_BYTE2&&(tmpP==numP[2]+1)&&num_type!=0&&N1!=0)|| |
208 |
((int)(unsigned char)Name_Buf[1]==CODE_BYTE2&& |
((int)(unsigned char)Name_Buf[2]==CODE_BYTE3&&(tmpP==numP[2]+1)&&num_type!=0&&N1!=0)|| |
209 |
(tmpP==numP[2]+1)&&num_type!=0&&N1!=0)|| |
((int)(unsigned char)Name_Buf[0]==CODE_BYTE1&&(int)(unsigned char)Name_Buf[1]==CODE_BYTE2&& |
210 |
((int)(unsigned char)Name_Buf[2]==CODE_BYTE3&& |
(int)(unsigned char)Name_Buf[2]==CODE_BYTE3&&num_type1!=0&&num_type1==num_type2)|| |
211 |
(tmpP==numP[2]+1)&&num_type!=0&&N1!=0)|| |
((int)(unsigned char)Name_Buf[0]==CODE_BYTE1&&(int)(unsigned char)Name_Buf[1]==CODE_BYTE2&& |
212 |
((int)(unsigned char)Name_Buf[0]==CODE_BYTE1&& |
(int)(unsigned char)Name_Buf[2]==CODE_BYTE3&&(tmpP==numP[2]+1))) |
|
(int)(unsigned char)Name_Buf[1]==CODE_BYTE2&& |
|
|
(int)(unsigned char)Name_Buf[2]==CODE_BYTE3&&num_type1!=0&&num_type1==num_type2)|| |
|
|
((int)(unsigned char)Name_Buf[0]==CODE_BYTE1&& |
|
|
(int)(unsigned char)Name_Buf[1]==CODE_BYTE2&& |
|
|
(int)(unsigned char)Name_Buf[2]==CODE_BYTE3&& |
|
|
(tmpP==numP[2]+1))) |
|
213 |
{if (N1==0) {for (i=0;i<8;i++) buffer[i]=Name_Buf[i]; } |
{if (N1==0) {for (i=0;i<8;i++) buffer[i]=Name_Buf[i]; } |
214 |
N1+=1; FLAG_BIG=0; |
N1+=1; FLAG_BIG=0; |
215 |
if (N1==1) {icount+=8;} |
if (N1==1) {icount+=8;} |
216 |
|
|
217 |
packet_counter[num_type]+=1; //count packet number for each type |
packet_counter[num_type]+=1; //count packet number for each type |
218 |
if ((print_flag>0) && (fmod((float)(tmpP),(float)(1000.))==0.)&&(tmpP!=0)) cout<<"verifying "<<tmpP<<"\n"; |
if ((print_flag>0) && (fmod((float)(tmpP),(float)(1000.))==0.)&&(tmpP!=0)) cout<<"verifying "<<tmpP<<"\n"; |
219 |
if (N1!=1) |
if (N1!=1) |
227 |
{flag_len[2]=1; |
{flag_len[2]=1; |
228 |
er_pack_Len+=1; |
er_pack_Len+=1; |
229 |
if (print_flag>0) |
if (print_flag>0) |
230 |
{cout<<"pack num "<<numP[2]<<" len="<<LenP[2]<<" true len="<<adr_last[2]-adr_first[2]-16<<" Type="<<num_type<<"\n";} |
{cout<<"pack num "<<numP[2]<<" len="<<LenP[2]<<" true len="<<adr_last[2]-adr_first[2]-16<<" Type=" |
231 |
|
<<packet_type[PackType[2]]<<"\n";} |
232 |
fo_work<<"Length error : packet number="<<numP[2]<<" : length in header="<<LenP[2]<< |
fo_work<<"Length error : packet number="<<numP[2]<<" : length in header="<<LenP[2]<< |
233 |
" : length till next header="<<adr_last[2]-adr_first[2]-16<<" : packet type="<<hex<< |
" : length till next header="<<adr_last[2]-adr_first[2]-16<<" : packet type="<<hex<< |
234 |
packet_type[num_type]<<dec<<"\n"; |
packet_type[PackType[2]]<<dec<<"\n"; |
235 |
} |
} |
236 |
if ( (flag_CRC_H[2]==0)&&(GLOBAL_LEN_ER>0)&& |
if ( (flag_CRC_H[2]==0)&&(GLOBAL_LEN_ER>0)&& |
237 |
( ((adr_last[2]-adr_first[2]+1)<(LenP[2]+16))||((adr_last[2]-adr_first[2]+1-LenP[2]-16)>64) ) ) |
( ((adr_last[2]-adr_first[2]+1)<(LenP[2]+16))||((adr_last[2]-adr_first[2]+1-LenP[2]-16)>64) ) ) |
238 |
{flag_len_weak[2]=1; |
{flag_len_weak[2]=1; |
239 |
if (print_flag>0) |
if (print_flag>0) |
240 |
{cout<<"weak length error; pack num "<<numP[2]<<" len="<<LenP[2]<<" true len="<<adr_last[2]-adr_first[2]-16 |
{cout<<"weak length error; pack num "<<numP[2]<<" len="<<LenP[2]<<" true len="<<adr_last[2]-adr_first[2]-16 |
241 |
<<" Type="<<num_type<<"\n";} |
<<" Type="<<hex<<packet_type[PackType[2]]<<dec<<"\n";} |
242 |
fo_work<<"Weak length error : packet number="<<numP[2]<<" : length in header="<<LenP[2]<< |
fo_work<<"Weak length error : packet number="<<numP[2]<<" : length in header="<<LenP[2]<< |
243 |
" : length till next header="<<adr_last[2]-adr_first[2]-16<<" : packet type="<<num_type<<"\n"; |
" : length till next header="<<adr_last[2]-adr_first[2]-16<<" : packet type="<<hex<< |
244 |
|
packet_type[PackType[2]]<<dec<<"\n"; |
245 |
} |
} |
246 |
|
|
247 |
if ((GLOBAL_LEN_ER>0)&&(flag_len[2]==1)) |
if ((GLOBAL_LEN_ER>0)&&(flag_len[2]==1)) |
320 |
flag_time[2]=0; |
flag_time[2]=0; |
321 |
flag_CRC_cor[2]=0; |
flag_CRC_cor[2]=0; |
322 |
for (i=0; i<2; i++) |
for (i=0; i<2; i++) |
323 |
{numP[i]=numP[2]; time_p[i]=time_p[2]; |
{numP[i]=numP[2]; PackType[i]=PackType[2]; time_p[i]=time_p[2]; |
324 |
CRC_Header[i]=CRC_Header[2]; |
CRC_Header[i]=CRC_Header[2]; |
325 |
LenP[i]=LenP[2]; |
LenP[i]=LenP[2]; |
326 |
adr_first[i]=adr_first[2]; |
adr_first[i]=adr_first[2]; |
335 |
} |
} |
336 |
default:{ |
default:{ |
337 |
for (i=0; i<2; i++) |
for (i=0; i<2; i++) |
338 |
{numP[i]=numP[i+1]; |
{numP[i]=numP[i+1]; PackType[i]=PackType[i+1]; |
339 |
time_p[i]=time_p[i+1]; |
time_p[i]=time_p[i+1]; |
340 |
CRC_Header[i]=CRC_Header[i+1]; |
CRC_Header[i]=CRC_Header[i+1]; |
341 |
CRC_bad_pack[i]=CRC_bad_pack[i+1]; |
CRC_bad_pack[i]=CRC_bad_pack[i+1]; |
353 |
numP[2]=(long int)(unsigned char)(Name_Buf[7])+ |
numP[2]=(long int)(unsigned char)(Name_Buf[7])+ |
354 |
256*(long int)(unsigned char)(Name_Buf[6])+ |
256*(long int)(unsigned char)(Name_Buf[6])+ |
355 |
256*256*(long int)(unsigned char)(Name_Buf[5]); |
256*256*(long int)(unsigned char)(Name_Buf[5]); |
356 |
|
PackType[2]=num_type-1; |
357 |
time_p[2]=(long int)(unsigned char)(Name_Buf_add[3])+ |
time_p[2]=(long int)(unsigned char)(Name_Buf_add[3])+ |
358 |
256*(long int)(unsigned char)(Name_Buf_add[2])+ |
256*(long int)(unsigned char)(Name_Buf_add[2])+ |
359 |
256*256*(long int)(unsigned char)(Name_Buf_add[1])+ |
256*256*(long int)(unsigned char)(Name_Buf_add[1])+ |
388 |
fo_work<<"CRC error : PAMELA packet="<<numP[2]<<" : real CRC="<<bitset<8>(CRC_Header[2])<<"("<<CRC_Header[2]<< |
fo_work<<"CRC error : PAMELA packet="<<numP[2]<<" : real CRC="<<bitset<8>(CRC_Header[2])<<"("<<CRC_Header[2]<< |
389 |
") : calculated CRC="<<bitset<8>(CalcCheckSum)<<"("<<CalcCheckSum<<")\n"; |
") : calculated CRC="<<bitset<8>(CalcCheckSum)<<"("<<CalcCheckSum<<")\n"; |
390 |
} |
} |
391 |
if ((time_max<time_p[2])&&(flag_CRC_H[2]!=1)) time_max=time_p[2]; |
// TIme in the last new packet |
392 |
|
if ((time_max<=time_p[2])&&(flag_CRC_H[2]!=1)) |
393 |
|
{time_max=time_p[2];} |
394 |
|
else if ((time_max>time_p[2])&&(flag_CRC_H[2]!=1)&&(CLN2_FLAG==2)) |
395 |
|
{fin.seekg(0,ios::end); CLN2_END=1; goto END;} |
396 |
/*********packet counter error analysis****************************/ |
/*********packet counter error analysis****************************/ |
397 |
if ((numP[2]!=(numP[1]+1))&&(N1!=1)&&(flag_len[1]==0)&&(CRC_bad_pack[2]==numP[2])) |
if ((numP[2]!=(numP[1]+1))&&(N1!=1)&&(flag_len[1]==0)&&(CRC_bad_pack[2]==numP[2])) |
398 |
{ |
{ |
442 |
/***missed packets: 21 20 19 18 17 ******************************/ |
/***missed packets: 21 20 19 18 17 ******************************/ |
443 |
if ((numP[1]<numP[0])&&(numP[1]==numP[2]-1)&&(flag_pack[0]==0)&&(flag_pack[1]==0)&&(flag_pack[2]==0)) |
if ((numP[1]<numP[0])&&(numP[1]==numP[2]-1)&&(flag_pack[0]==0)&&(flag_pack[1]==0)&&(flag_pack[2]==0)) |
444 |
{Mis_group+=1; |
{Mis_group+=1; |
445 |
count_sec_miss+=numP[0]-1-numP[1]; |
count_sec_miss+=numP[0]-numP[1]; |
446 |
fprintf(fo_miss,"secondary transmitted packets may be %9i -%9i number of packets=%9i\n", |
fprintf(fo_miss,"secondary transmitted packets may be %9i -%9i number of packets=%9i\n", |
447 |
numP[1],numP[0],numP[0]-1-numP[1]); |
numP[1],numP[0],numP[0]-numP[1]); |
448 |
} |
} |
449 |
/**packet numbers: 10 11 (12 15 19) 20 ****************************/ |
/**packet numbers: 10 11 (12 15 19) 20 ****************************/ |
450 |
/***********missed packets: 16 17 18 ********************************/ |
/***********missed packets: 16 17 18 ********************************/ |
528 |
for (i=0;i<4;i++) Byte_adr1[i]=0; |
for (i=0;i<4;i++) Byte_adr1[i]=0; |
529 |
for (i=0;i<4;i++) |
for (i=0;i<4;i++) |
530 |
{if (temp[0]/(long int)(pow(256.,3-i))>=1) |
{if (temp[0]/(long int)(pow(256.,3-i))>=1) |
531 |
{Byte_adr1[3-i]=(int)(temp[0]/(long int)(pow(256.,3-i))); |
{Byte_adr1[3-i]=(int)(temp[0]/(long int)(pow(256.,3-i))); |
532 |
temp[0]=temp[0]-(long int)pow(256.,3-i)* |
temp[0]=temp[0]-(long int)pow(256.,3-i)*(int)(temp[0]/(long int)(pow(256.,3-i)));} |
|
(int)(temp[0]/(long int)(pow(256.,3-i)));} |
|
533 |
} |
} |
534 |
|
|
535 |
//Write packet type and begin displacement in log file |
//Write packet type and begin displacement in log file |
557 |
if ((print_flag>0) && fmod( double(icount_total), double(100000000.))==double(0.)) {cout<<"Mbytes="<<icount_total/1000000.<<"\n";} |
if ((print_flag>0) && fmod( double(icount_total), double(100000000.))==double(0.)) {cout<<"Mbytes="<<icount_total/1000000.<<"\n";} |
558 |
if ((N1>0)&&(FLAG_BIG==0)) icount+=1; |
if ((N1>0)&&(FLAG_BIG==0)) icount+=1; |
559 |
for (i=0;i<7;i++) Name_Buf[i]=Name_Buf[i+1]; |
for (i=0;i<7;i++) Name_Buf[i]=Name_Buf[i+1]; |
560 |
Name_Buf[7]=ch; /*for(i=0;i<8;i++) printf("%x",(int)(unsigned char)Name_Buf[i]); printf("\n");*/ |
Name_Buf[7]=ch; |
561 |
if ((icount-adr_first[2]-1)<Nmax) |
if ((icount-adr_first[2]-1)<Nmax) |
562 |
{buffer[icount-adr_first[2]]=ch;} |
{buffer[icount-adr_first[2]]=ch;} |
563 |
else |
else |
564 |
{flag_len[2]=1; |
{if (FLAG_BIG==0) |
565 |
er_pack_Len+=1; |
{flag_len[2]=1; |
566 |
fo_work<<"Length error (too long packet) : packet number="<<numP[2]<<" : length in header="<<LenP[2]<< |
er_pack_Len+=1; |
567 |
" : length (> Nmax="<<Nmax<<")="<<icount-adr_first[2]<<" : packet type="<<hex<< |
fo_work<<"Length error (too long packet) : packet number="<<numP[2]<<" : length in header="<<LenP[2]<< |
568 |
packet_type[num_type]<<dec<<"\n"; |
" : length (> Nmax="<<Nmax<<")="<<icount-adr_first[2]<<" : packet type="<<hex<< |
569 |
if (print_flag>0 && FLAG_BIG==0) {cout<<"too long packet "<<numP[2]<<"\n";} |
packet_type[PackType[2]]<<dec<<"\n"; |
570 |
FLAG_BIG=1; |
if (print_flag>0) {cout<<"too long packet "<<numP[2]<<"\n";} |
571 |
|
FLAG_BIG=1; |
572 |
|
} |
573 |
} |
} |
574 |
} |
} |
575 |
/******************************************************************/ |
/******************************************************************/ |
576 |
/********************MAIN READING CYCLE END************************/ |
/********************MAIN READING CYCLE END************************/ |
577 |
/******************************************************************/ |
/******************************************************************/ |
578 |
|
END: |
579 |
|
if (CLN2_END==0) |
580 |
|
{ |
581 |
/*************PAMELA LAST PACKET END DISPLACEMENT******************/ |
/*************PAMELA LAST PACKET END DISPLACEMENT******************/ |
582 |
if (FLAG_BIG==0) {adr_last[2]=icount;} |
if ((icount-adr_first[2]+1-LenP[2]-16)<=Limit) {adr_last[2]=icount;} //end byte for previous packet |
583 |
else {adr_last[2]=adr_first[2]+Limit;} |
else if ((icount-adr_first[2]+1-LenP[2]-16)>Limit) {adr_last[2]=adr_first[2]+Limit;} //end byte for previous packet |
584 |
|
|
585 |
if ((adr_last[2]-adr_first[2]+1-LenP[2]-16>64)||(adr_last[2]-adr_first[2]+1-LenP[2]-16<0)) |
if ((adr_last[2]-adr_first[2]+1-LenP[2]-16>64)||(adr_last[2]-adr_first[2]+1-LenP[2]-16<0)) |
586 |
{ |
{ |
587 |
flag_len[2]=1; |
flag_len[2]=1; |
588 |
er_pack_Len+=1; |
er_pack_Len+=1; |
589 |
fo_work<<"Length error : packet number="<<numP[2]<<" : length in header="<<LenP[2]<< |
fo_work<<"Length error : packet number="<<numP[2]<<" : length in header="<<LenP[2]<< |
590 |
" : length till next header="<<adr_last[2]-adr_first[2]-16<<" : packet type="<<hex<< |
" : length till next header="<<adr_last[2]-adr_first[2]-16<<" : packet type="<<hex<< |
591 |
packet_type[num_type]<<dec<<"\n"; |
packet_type[PackType[2]]<<dec<<"\n"; |
592 |
} |
} |
593 |
if ( (flag_len[2]!=1)&&(flag_CRC_H[2]!=1) ) |
if ( (flag_len[2]!=1)&&(flag_CRC_H[2]!=1) ) |
594 |
{adr_last[2]=adr_first[2]+LenP[2]+15;} |
{adr_last[2]=adr_first[2]+LenP[2]+15;} |
598 |
{if (temp[1]/(long int)(pow(256.,3-i))>=1) |
{if (temp[1]/(long int)(pow(256.,3-i))>=1) |
599 |
{Byte_adr2[3-i]=(int)(temp[1]/(long int)(pow(256.,3-i))); |
{Byte_adr2[3-i]=(int)(temp[1]/(long int)(pow(256.,3-i))); |
600 |
temp[1]=temp[1]-(long int)pow(256.,3-i)* |
temp[1]=temp[1]-(long int)pow(256.,3-i)* |
601 |
(int)(temp[1]/(long int)(pow(256.,3-i)));}} |
(int)(temp[1]/(long int)(pow(256.,3-i)));}} |
|
|
|
|
/*********PAMELA LAST PACKET LENGTH ERROR ANALYSIS*****************/ |
|
602 |
|
|
603 |
//Write last packet end displacement in log file |
//Write last packet end displacement in log file |
604 |
for (i=0;i<4;i++) fprintf(fo_log,"%1c",char(Byte_adr2[i])); |
for (i=0;i<4;i++) fprintf(fo_log,"%1c",char(Byte_adr2[i])); |
605 |
|
|
606 |
//Write error number in log and work.dat files |
//Write error number in log and work.dat files |
607 |
flags=(short int)(pow((float)(2*flag_CRC_H[2]),1)+ |
flags=(short int)(pow((float)(2*flag_CRC_H[2]),1)+ |
608 |
pow((float)(2*flag_len[2]),2)+ |
pow((float)(2*flag_len[2]),2)+ |
609 |
pow((float)(2*flag_pack[2]),3)+ |
pow((float)(2*flag_pack[2]),3)+ |
610 |
pow((float)(2*flag_name[2]),4)+ |
pow((float)(2*flag_name[2]),4)+ |
611 |
pow((float)(2*flag_type[2]),5)+ |
pow((float)(2*flag_type[2]),5)+ |
612 |
pow((float)(2*flag_time[2]),6)+ |
pow((float)(2*flag_time[2]),6)+ |
613 |
pow((float)(2*flag_CRC_cor[2]),7)); |
pow((float)(2*flag_CRC_cor[2]),7)); |
614 |
if ((flags!=0)&&(N1>0)) er_pack_count+=1; |
if ((flags!=0)&&(N1>0)) er_pack_count+=1; |
615 |
fprintf(fo_log,"%1c",char(flags)); |
fprintf(fo_log,"%1c",char(flags)); |
616 |
//Write error number in work.dat file |
//Write error number in work.dat file |
617 |
if (flags!=0) fo_work<<"PAMELA packet="<<numP[2]<<" : error flag="<<flags<<"\n"; |
if (flags!=0) fo_work<<"PAMELA packet="<<numP[2]<<" : error flag="<<flags<<"\n"; |
618 |
|
} |
619 |
|
|
620 |
//Write inf file |
//Write inf file |
621 |
fprintf(fo_inf,"%lli bytes in initial file %s\n", icount_total, name_in); |
fprintf(fo_inf,"%lli bytes in initial file %s\n", icount_total, name_in); |
622 |
icount_int = (int)(icount_total/1024); |
icount_int = (int)(icount_total/1024); |
642 |
fprintf(fo_inf,"Type %x number of PAMELA packets= %i\n", |
fprintf(fo_inf,"Type %x number of PAMELA packets= %i\n", |
643 |
packet_type[i-1], packet_counter[i]); |
packet_type[i-1], packet_counter[i]); |
644 |
} |
} |
645 |
|
|
646 |
|
if (CLN2_END==0) |
647 |
|
{ |
648 |
//Write data in file "nnnnn_mmm_xxx_cln2.pam" |
//Write data in file "nnnnn_mmm_xxx_cln2.pam" |
649 |
for (i=0;i<adr_last[2]-adr_first[2]+1;i++) |
for (i=0;i<adr_last[2]-adr_first[2]+1;i++) |
650 |
{fo_pam<<buffer[i];} |
{fo_pam<<buffer[i];} |
651 |
|
} |
652 |
|
|
653 |
time(&seconds); |
time(&seconds); |
654 |
timeinfo=localtime(&seconds); |
timeinfo=localtime(&seconds); |
703 |
// } |
// } |
704 |
|
|
705 |
delete [] buffer; |
delete [] buffer; |
|
|
|
706 |
/***************************************************************/ |
/***************************************************************/ |
707 |
fin.close(); |
fin.close(); |
708 |
fo_work.close(); |
fo_work.close(); |