]> jspc29.x-matter.uni-frankfurt.de Git - mvdsensorcontrol.git/commitdiff
unpacker.cxx v2 format
authorwww@jspc55 <www@jspc55>
Tue, 1 Jul 2014 12:13:22 +0000 (14:13 +0200)
committerwww@jspc55 <www@jspc55>
Tue, 1 Jul 2014 12:13:22 +0000 (14:13 +0200)
tools/unpacker/unpacker.cxx

index 269a8777f82f9d84bf679a4c7a776e8fef35584f..e7df3d1cf8a340ea2fb2b0897b5289e1dfdc0b79 100644 (file)
@@ -83,12 +83,34 @@ signed analyzeData(hadaq::RawSubevent* sub, unsigned ix, unsigned datalen, unsig
   unsigned RocEnd       = ix + datalen -1;
   while(1) {
     unsigned sensorHead   = sub->Data(ix++);
-    unsigned sensorId     = (source << 16)|(sub->Data(ix++)>>16);
-    unsigned sensorStatus = sub->Data(ix++);
-    unsigned sensorError  = sub->Data(ix++);
-    unsigned sensorDebug  = sub->Data(ix++);
-    unsigned mySensor     = getSensor(sensorId);
-    ix += 2;  //Skip time
+    unsigned sensorId = 0x0;
+    unsigned sensorStatus = 0x0;
+    unsigned external = 0x0;
+    unsigned internal_fr_num = 0x0;
+    unsigned mySensor = 0x0;
+    unsigned sensorError = 0x0;
+    unsigned sensorDebug = 0x0;
+    
+    if (sub->Data(ix)>>16 == 0xf002){
+      // Version 2
+      ix++;
+      sensorId     = sub->Data(ix++);
+      sensorStatus = sub->Data(ix++);
+      ix += 2;  // skip reserved words
+      external          = sub->Data(ix++);
+      internal_fr_num   = sub->Data(ix++);
+      sensorError  = 0x0;
+      sensorDebug  = 0x0;
+    }
+    else{
+      sensorId     = (source << 16)|(sub->Data(ix++)>>16);
+      sensorStatus = sub->Data(ix++);
+      sensorError  = sub->Data(ix++);
+      sensorDebug  = sub->Data(ix++);
+      ix += 2;  //Skip time
+    }
+    
+    mySensor     = getSensor(sensorId);
     
     #if DEBUG>=1
     printf("Head\t%08x\tID\t%08x\tStatus\t%08x\tError\t%08x\tDebug\t%08x\n",
@@ -232,7 +254,7 @@ void writeResults() {
     if (!cvt)  {
       printf("couldn't open a pipe; quitting\n");
       exit(1);
-      }    
+      }
     fprintf(cvt, "set terminal png size 800,400 font \",9\";\n");
     fprintf(cvt, "set palette model RGB;\n");
     fprintf(cvt, "set xrange [0:1152];\n");
@@ -260,7 +282,8 @@ void writeResults() {
               hitrates[2],
               hitrates[3]);
     fprintf(cvt, "set output '%s/%s_%08x.png';\n",picPath,mySystem,sensors[i]);
-    fprintf(cvt, "plot '-' matrix with image\n");    
+    printf("set output '%s/%s_%08x.png';\n",picPath,mySystem,sensors[i]);
+    fprintf(cvt, "plot '-' matrix with image\n");
     
     for(unsigned r = 0; r < 576; r++) {
       for(unsigned c = 0; c < 1152; c++) {