/* gcc -c error.c -I/afs/psi.ch/user/f/follath_r/EPICS/base/include -I/afs/psi.ch/user/f/follath_r/EPICS/base/include/os/Linux/ Die Funktion monintGenerator hat hier eigentlich nichts verloren, sie sollte spaeter mal ausgeglieder werden. Dann wird epicsEvent.h auch nicht mehr benoetigt. */ #include #include #include #include #include // post_event ??? #include "Error.h" ERRORMSG Fehler[NFEHLER]; int lastError; int gle0,gle1,gle2; long errorCount; int DebugLevel; /****************************************************************************/ /* generiert Event mit Nummer arg */ /* Soll Parameter event übergeben */ int monintGenerator(int arg) { // if (DebugLevel>2) printf("MonIntGen %i\n",arg); post_event(arg); return (0); } /****************************************************************************/ /* Neue Fehlermeldungen werden oben eingefuegt */ /* Kopiert die 1. Fehlermedlung nach dem Programmstart leider nach Feldelement 1 */ void MonError( char *Meldung) { errorCount = errorCount + 1; if (lastError == (NFEHLER-1) ) lastError = 0; else lastError = lastError + 1; strncpy(Fehler[lastError].Msg,Meldung,MSGBUFLEN); Fehler[lastError].count = errorCount; Fehler[lastError].Zeit = time(NULL); gle0=lastError; if (gle0 == 0) gle1 = NFEHLER-1; else gle1=gle0-1; if (gle1 == 0) gle2 = NFEHLER-1; else gle2=gle1-1; monintGenerator(MONINT_EVNT_ERROR); } /****************************************************************************/ void InitError(void) { int i; time_t jetzt; lastError = 0; errorCount = 0; DebugLevel = 1; lastError=0; gle0=0; gle1=NFEHLER-1; gle2=NFEHLER-2; jetzt = time(NULL); for (i = 0; i < NFEHLER; i++) { strncpy(Fehler[i].Msg, "\0",MSGBUFLEN); Fehler[i].count = 0; Fehler[i].Zeit = jetzt; // printf("%i Nr. %6li : %s\n",i, Fehler[i].count,Fehler[i].Msg); } errorCount = 0; } /****************************************************************************/ void ShowErrors(void) { int i; for (i = 0; i < NFEHLER; i++) /* den letzten zuerst */ { printf("Error %6li occured: %s\n", Fehler[i].count,Fehler[i].Msg); } return; } /****************************************************************************/ /* Loescht Fehlermeldungen */ int ClearErrors(void) { int i; time_t jetzt; //printf("ClearErrors: \n"); jetzt = time(NULL); for (i = 0; i < NFEHLER; i++) { strncpy(Fehler[i].Msg, "\0",MSGBUFLEN); Fehler[i].count = 0; Fehler[i].Zeit = jetzt; } errorCount = 0; monintGenerator(MONINT_EVNT_ERROR); /* EPICS benachrichtigen */ return(MON_NO_ERROR); }