]> jspc29.x-matter.uni-frankfurt.de Git - mvdsensorcontrol.git/commitdiff
some small changes to unpacker
authorJan Michel <j.michel@gsi.de>
Fri, 27 Jun 2014 14:05:49 +0000 (16:05 +0200)
committerJan Michel <j.michel@gsi.de>
Fri, 27 Jun 2014 14:05:49 +0000 (16:05 +0200)
tools/preview/unpack_hld.pl
tools/unpacker/unpacker.cxx

index 6687079f045d5a32d81326048c129ad590b8d463..9f63f34e28d17016b7c5d51e7d141f8e55f211c4 100755 (executable)
@@ -71,7 +71,7 @@ if($opt_help) {
 if(&checkArgs()){
     exit(0);
 }
-
+my $eventcounter = 0;
 my @evtHeader_list = ();
 my $evtHeader_aref = \@evtHeader_list;
 
@@ -85,7 +85,8 @@ my $fh = new FileHandle("$file", "r");
 
 while(1){
     @evtHeader_list = ();
-
+    if($eventcounter++ == $totalevents) {break;}
+    
     &getEvtHeader($fh,$evtHeader_aref);
     &printEvtHeader($evtHeader_aref) if($opt_verb);
 
index 58db4dd35302eb0765a5fad986a7e4cf9f9af622..269a8777f82f9d84bf679a4c7a776e8fef35584f 100644 (file)
@@ -99,7 +99,7 @@ signed analyzeData(hadaq::RawSubevent* sub, unsigned ix, unsigned datalen, unsig
         //Something is really wrong with data. Skip SubEvent!
         printf("Broken Sensor Header\n");
         statistics[mySensor][FRREALBROKEN]++;
-        #if DEBUG!=1        
+        #if DEBUG==0
         printf("Head\t%08x\tID\t%08x\tStatus\t%08x\tError\t%08x\tDebug\t%08x\n",
                     sensorHead, sensorId, sensorStatus, sensorError, sensorDebug);        
         #endif    
@@ -123,12 +123,14 @@ signed analyzeData(hadaq::RawSubevent* sub, unsigned ix, unsigned datalen, unsig
       unsigned sensorNumber = sub->Data(ix++);
       unsigned sensorLength = sub->Data(ix++) & 0xffff;
       
+      
       unsigned frameEndPos = ix + sensorLength;
       unsigned d,line = 0,column,pixels,statecnt = 0,ovf = 0;      
       #if DEBUG>=1
       printf("\t\t\tHeader\t%08x\tFrame\t%08x\tLength\t%i\n",
                 sensorDummy, sensorNumber, sensorLength);
       #endif 
+      if(sensorLength > 580) {printf("Invalid lenght. Something wrong."); statistics[mySensor][FRBROKEN]++; return -1;}
       if(sensorLength == 0) {
         goto FrameEnd;
         }        
@@ -165,7 +167,7 @@ signed analyzeData(hadaq::RawSubevent* sub, unsigned ix, unsigned datalen, unsig
               }
             }
           if(ix >= frameEndPos) {goto FrameEnd;}
-          
+          if(ix >= RocEnd)      {break;}
           }
         }
       FrameEnd:        
@@ -173,7 +175,7 @@ signed analyzeData(hadaq::RawSubevent* sub, unsigned ix, unsigned datalen, unsig
       ix += 1;  
       }  
     else {
-      ix += 0;
+      return -2;
       }
     if(ix >= RocEnd){break;}
     }
@@ -275,4 +277,4 @@ void writeResults() {
     }
   }  
 
-  
\ No newline at end of file
+