]> jspc29.x-matter.uni-frankfurt.de Git - mvdsensorcontrol.git/commitdiff
add handler for 'too many sensors' error. Frames are now skipped without crashing
authorJan Michel <j.michel@gsi.de>
Tue, 9 May 2017 14:30:26 +0000 (16:30 +0200)
committerJan Michel <j.michel@gsi.de>
Tue, 9 May 2017 14:30:26 +0000 (16:30 +0200)
tools/unpacker/unpacker.cxx

index 2e467029ed1a25f94f5837b3358afbdcf411a656..6ce23357f8ea5b5f32b3f14ad5fb19ba0bca5285 100644 (file)
@@ -7,7 +7,7 @@ signed analyzeSubEvent(hadaq::RawSubevent* sub, unsigned pos, unsigned datalen,
 unsigned getSensor(unsigned sensorId);
 void writeResults();
 
-#define DEBUG 3
+#define DEBUG 0
 #define MAX_SENSORS 8
 
 unsigned framesize[MAX_SENSORS][5] = {{0}};
@@ -183,12 +183,13 @@ signed analyzeSubEvent(hadaq::RawSubevent* sub, unsigned pos, unsigned datalen,
                        printf("ERROR: Unsupported Data Version!\n");
                        continue;
                }
-               unsigned mySensor = getSensor(frame_id);
+               signed mySensor = getSensor(frame_id);
 #if DEBUG>=1
                printf("Sensor\t%02x\tID\t%08x\tStatus\t%08x\tError\t%08x\tDebug\t%08x\n",
                                                                mySensor, frame_id, frame_status, frame_errcode, frame_debug);
 #endif
-  framesize[mySensor][numSubevents%5] += datalen;
+    if(mySensor == -1) {return -1;}
+    framesize[mySensor][numSubevents%5] += datalen;
                if (sub->Data(pdata) != 0x55555555) {
 #if DEBUG>=1
                        printf("ERROR: Sensor Header (0x55555555) Not Found! (got: %08x)\n",sub->Data(pdata));