From a6290d87d42e711bfb3cae67692ed6c80234c777 Mon Sep 17 00:00:00 2001 From: Jan Michel Date: Tue, 9 May 2017 16:30:26 +0200 Subject: [PATCH] add handler for 'too many sensors' error. Frames are now skipped without crashing --- tools/unpacker/unpacker.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/unpacker/unpacker.cxx b/tools/unpacker/unpacker.cxx index 2e46702..6ce2335 100644 --- a/tools/unpacker/unpacker.cxx +++ b/tools/unpacker/unpacker.cxx @@ -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)); -- 2.43.0