Files
eib700/eibApp/src/Error.c
T
2025-03-12 12:15:37 +01:00

118 lines
2.8 KiB
C

/*
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 <string.h>
#include <time.h>
#include <stdio.h>
#include <epicsEvent.h>
#include <dbScan.h> // 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);
}