#define U_VERB_H "u_verb.c" /************************************************************************* $Archive: /PACS/OnBoard/u_verb.h $ $Revision: 1.10 $ $Date: 2009/04/23 13:51:12 $ $Author: amazy $ $Log: u_verb.h,v $ Revision 1.10 2009/04/23 13:51:12 amazy 6.029 * * 22 28/08/02 11:49 Amazy * Added the header with the history log *************************************************************************/ #ifdef CSL_SHOW_INCLUDE #pragma message( "Including " __FILE__ ) #endif #ifdef SIMULATOR #ifdef VERBOSE #include "stdio.h" #endif #else //SIMULATOR #ifdef VERBOSE #include "_stdio.h" #endif #include "display.h" #include "node1.h" #endif // SIMULATOR #ifndef U_BITS_H #include "u_bits.h" #endif //define categories for VERBOSE enum { VER_DPU_REC = 0x00000001, VER_DPU_SEND = 0x00000002, VER_SEQ = 0x00000004, VER_SEQ_CMD = 0x00000008, VER_HK = 0x00000010, VER_HK_DIAG = 0x00000020, VER_HK_COMMON = 0x00000040, VER_DEC_REC = 0x00000080, VER_DEC_CTRL = 0x00000100, VER_CHOP_SIM = 0x00000200, VER_PACK_ENC = 0x00000400, VER_DET_SIM = 0x00000800, VER_BOL_REC = 0x00001000, VER_BOL_CTRL = 0x00002000, VER_PID_CTRL = 0x00004000, VER_CRISA_DRV = 0x00008000, VER_TASK = 0x00100000, VER_ERR = 0x00200000, VER_CRC = 0x00400000, VER_LINK = 0x00800000, VER_ALL = 0x7FFFFFFF, }; /* MACRO : VER(verbose_text) ************************* USE : This macro has the same function as the "printf". Moreover, you can give a level of importance and a category to the information it must displays. This allows you to filter the information displayed on the console (thanks to SetVerboseLevel and SetVerboseCategory). The macro also ensures that there is only one task at a time writing on the console so the display is not interleaved. By not defining the VERBOSE compilation flag, you can suppress all display. It is used only for debug, when developping the application */ #ifdef VERBOSE extern int gVerboseLevel; extern int gVerboseCategories; extern char gBlankSpaces[10]; #ifdef SIMULATOR #define VER(category, verbose_text) {if (TEST_ONE_BIT(gVerboseCategories, category)) {KS_ResLockW(RES_STDIO); printf("%s\n", verbose_text); KS_ResUnlock(RES_STDIO);} } #define VERL(category, verbose_level, verbose_text) if ((verbose_level < gVerboseLevel) && (TEST_ONE_BIT(gVerboseCategories, category))) {KS_ResLockW(RES_STDIO); printf("%d%s", verbose_level, gBlankSpaces + 9-verbose_level); printf(verbose_text); printf("\n"); KS_ResUnlock(RES_STDIO);} #define VERL1(category, verbose_level, verbose_text, var) if ((verbose_level < gVerboseLevel) && (TEST_ONE_BIT(gVerboseCategories, category))) {KS_ResLockW(RES_STDIO); printf("%d%s", verbose_level, gBlankSpaces + 9-verbose_level); printf(verbose_text, var); printf("\n"); KS_ResUnlock(RES_STDIO);} #define VERL2(category, verbose_level, verbose_text, var1, var2) if ((verbose_level < gVerboseLevel) && (TEST_ONE_BIT(gVerboseCategories, category))) {KS_ResLockW(RES_STDIO); printf("%d%s", verbose_level, gBlankSpaces + 9-verbose_level); printf(verbose_text, var1, var2); printf("\n"); KS_ResUnlock(RES_STDIO);} #define VERL3(category, verbose_level, verbose_text, var1, var2, var3) if ((verbose_level < gVerboseLevel) && (TEST_ONE_BIT(gVerboseCategories, category))) {KS_ResLockW(RES_STDIO); printf("%d%s", verbose_level, gBlankSpaces + 9-verbose_level); printf(verbose_text, var1, var2, var3); printf("\n"); KS_ResUnlock(RES_STDIO);} #else //SIMULATOR extern char gTemporaryString[]; extern char gTemporaryString2[]; #define VER(category, verbose_text) {if (TEST_ONE_BIT(gVerboseCategories, category)) {KS_ResLockW(RES_STDIO); sprintf(gTemporaryString, "%s@", verbose_text); display(gTemporaryString); KS_ResUnlock(RES_STDIO);}} #define VERL(category, verbose_level, verbose_text) if ((verbose_level < gVerboseLevel) && (TEST_ONE_BIT(gVerboseCategories, category))) {KS_ResLockW(RES_STDIO); sprintf(gTemporaryString, "%d%s%s@", verbose_level, gBlankSpaces + 9-verbose_level, verbose_text); display(gTemporaryString); KS_ResUnlock(RES_STDIO);} #define VERL1(category, verbose_level, verbose_text, var) if ((verbose_level < gVerboseLevel) && (TEST_ONE_BIT(gVerboseCategories, category))) {KS_ResLockW(RES_STDIO); sprintf(gTemporaryString2, verbose_text, var); sprintf(gTemporaryString, "%d%s%s@", verbose_level, gBlankSpaces + 9-verbose_level, gTemporaryString2); display(gTemporaryString); KS_ResUnlock(RES_STDIO);} #define VERL2(category, verbose_level, verbose_text, var1, var2) if ((verbose_level < gVerboseLevel) && (TEST_ONE_BIT(gVerboseCategories, category))) {KS_ResLockW(RES_STDIO); sprintf(gTemporaryString2, verbose_text, var1, var2); sprintf(gTemporaryString, "%d%s%s@", verbose_level, gBlankSpaces + 9-verbose_level, gTemporaryString2); display(gTemporaryString); KS_ResUnlock(RES_STDIO);} #define VERL3(category, verbose_level, verbose_text, var1, var2, var3) if ((verbose_level < gVerboseLevel) && (TEST_ONE_BIT(gVerboseCategories, category))) {KS_ResLockW(RES_STDIO); sprintf(gTemporaryString2, verbose_text, var1, var2, var3); sprintf(gTemporaryString, "%d%s%s@", verbose_level, gBlankSpaces + 9-verbose_level, gTemporaryString2); display(gTemporaryString); KS_ResUnlock(RES_STDIO);} #endif //SIMULATOR #else //VERBOSE #define VER(category, verbose_text) #define VERL(category, verbose_level, verbose_text) #define VERL1(category, verbose_level, verbose_text, var) #define VERL2(category, verbose_level, verbose_text, var1, var2) #define VERL3(category, verbose_level, verbose_text, var1, var2, var3) #endif // VERBOSE /* MACRO : ASSERT(condition, warning_message) ****************************************** USE : This macro verifies that the condition is true and generate a verbose message if it is not. It is used only for debug, when developping the application on the sigma board */ #ifdef CSL_SAFE #define ASSERT(condition, warning_message) {\ if (!(condition)) \ VER(VER_ERR, warning_message);} #else #define ASSERT(condition, warning_message) #endif // CSL_SAFE