| 1 | /********************************************************/
|
|---|
| 2 | /* file: DFDebug.h (originally ROSDebug.h) */
|
|---|
| 3 | /* description: Nice macros for debugging purposesq */
|
|---|
| 4 | /* maintainer: Markus Joos, CERN/PH-ESS */
|
|---|
| 5 | /********************************************************/
|
|---|
| 6 |
|
|---|
| 7 | #include <iostream>
|
|---|
| 8 | #include <sys/types.h>
|
|---|
| 9 | #include <unistd.h>
|
|---|
| 10 | #include <pthread.h>
|
|---|
| 11 | #include "DFDebug/GlobalDebugSettings.h"
|
|---|
| 12 |
|
|---|
| 13 | #ifndef DFDEBUG_H
|
|---|
| 14 | #define DFDEBUG_H
|
|---|
| 15 |
|
|---|
| 16 | #if (DEBUG_LEVEL>0)
|
|---|
| 17 | #define DEBUG_TEXT(my_package, level, text)\
|
|---|
| 18 | {\
|
|---|
| 19 | int oldState;\
|
|---|
| 20 | pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldState);\
|
|---|
| 21 | DF::GlobalDebugSettings::lock();\
|
|---|
| 22 | pthread_t my_tid;\
|
|---|
| 23 | my_tid = pthread_self();\
|
|---|
| 24 | if ((my_package == DF::GlobalDebugSettings::packageId()) || (DF::GlobalDebugSettings::packageId() == 0))\
|
|---|
| 25 | if (DF::GlobalDebugSettings::traceLevel() >= level)\
|
|---|
| 26 | std::cout << std::dec << "Debug(" << my_package << "," << my_tid << "): " << text << std::endl;\
|
|---|
| 27 | DF::GlobalDebugSettings::unlock();\
|
|---|
| 28 | pthread_setcancelstate(oldState, 0);\
|
|---|
| 29 | }
|
|---|
| 30 | #else
|
|---|
| 31 | #define DEBUG_TEXT(my_package, level, text)
|
|---|
| 32 | #endif
|
|---|
| 33 |
|
|---|
| 34 | #define OUT_TEXT(my_package, text)\
|
|---|
| 35 | {\
|
|---|
| 36 | int oldState;\
|
|---|
| 37 | pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldState);\
|
|---|
| 38 | std::cout << "Printout(" << my_package << "): " << text << std::endl;\
|
|---|
| 39 | pthread_setcancelstate(oldState, 0);\
|
|---|
| 40 | }
|
|---|
| 41 |
|
|---|
| 42 | #define ERR_TEXT(my_package, text)\
|
|---|
| 43 | {\
|
|---|
| 44 | int oldState;\
|
|---|
| 45 | pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldState);\
|
|---|
| 46 | std::cerr << "Error(" << my_package << "): " << text << std::endl;\
|
|---|
| 47 | pthread_setcancelstate(oldState, 0);\
|
|---|
| 48 | }
|
|---|
| 49 |
|
|---|
| 50 | #define HEX(n) std::hex << n << std::dec
|
|---|
| 51 |
|
|---|
| 52 | // Definition of some package identifiers
|
|---|
| 53 | // Naming convention:
|
|---|
| 54 | // DFDB_<A>_<B> with:
|
|---|
| 55 | // A = (abbreviated) package name without underscores
|
|---|
| 56 | // B = Suidentifier within package
|
|---|
| 57 | //
|
|---|
| 58 | // NOTE:
|
|---|
| 59 | // IF YOU ARE ADDING A NEW PACKAGE HERE DO NOT FORGET TO ALSO ADD
|
|---|
| 60 | // IT TO THE DFDEBUG_MENU TEST PROGRAM IN ../SRC/TEST
|
|---|
| 61 | //
|
|---|
| 62 |
|
|---|
| 63 | enum
|
|---|
| 64 | {
|
|---|
| 65 | DFDB_ROSFM = 1, //ROSFragmentManagement
|
|---|
| 66 | DFDB_ROSEF, //ROSEventFragment
|
|---|
| 67 | DFDB_ROSSWROBIN, //ROSSWRobin
|
|---|
| 68 | DFDB_ROSFILAR, //ROSfilar
|
|---|
| 69 | DFDB_ROSMEMPOOL, //ROSMemoryPool
|
|---|
| 70 | DFDB_ROSEIM, //ROSEventInputManager
|
|---|
| 71 | DFDB_ROSIO, //ROSIO
|
|---|
| 72 | DFDB_ROSTG, //Trigger generator in ROSIO
|
|---|
| 73 | DFDB_SLINK, //ROSslink
|
|---|
| 74 | DFDB_ROSSOLAR, //ROSsolar
|
|---|
| 75 | DFDB_ROSQUEST, //ROSsolar (QUEST)
|
|---|
| 76 | DFDB_QUEUE, //Queue debugging (ROSSWRobin, ROSIO, ROSCore)
|
|---|
| 77 | DFDB_ROSCORE, //ROSCore
|
|---|
| 78 | DFDB_ROSROBIN, //ROSRobin
|
|---|
| 79 | DFDB_DFDB, //DFDebug
|
|---|
| 80 | DFDB_CMEMRCC = 100, //cmem_rcc
|
|---|
| 81 | DFDB_IORCC, //io_rcc
|
|---|
| 82 | DFDB_VMERCC, //vme_rcc
|
|---|
| 83 | DFDB_RCCTS, //rcc_time_stamp
|
|---|
| 84 | DFDB_RCDEXAMPLE = 300, //RCDExample
|
|---|
| 85 | DFDB_RCDBITSTRING, //RCDBitString
|
|---|
| 86 | DFDB_RCDMENU, //RCDMenu
|
|---|
| 87 | DFDB_RCDMODULE, //RCDModule
|
|---|
| 88 | DFDB_RCDTTC, //RCDTtc
|
|---|
| 89 | DFDB_RCDVME, //RCDVme
|
|---|
| 90 | DFDB_RCDLTP, //RCDLTPModule and RCDLTPConfiguration
|
|---|
| 91 | DFDB_RCDRODBUSY, //rcc_rodbusy and RODBusyModule
|
|---|
| 92 | DFDB_RCDTTCVIMODULE, //RCDTtcviModule
|
|---|
| 93 | DFDB_RF2TTC, //RF2TTC and RFRX modules
|
|---|
| 94 | DFDB_TTCVI = 400 //Ttcvi
|
|---|
| 95 | };
|
|---|
| 96 |
|
|---|
| 97 | #endif //DFDEBUG_H
|
|---|