forked from optics/eib700
118 lines
2.8 KiB
C
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);
|
|
}
|