Esempio n. 1
0
/**************************************************************************
   Description   : Erzeugt zu einem Device das benoetigte Protokoll-
                   Implementierungs-Object
   Parameter     : Pointer to device
   Return-Value  : Pointer to new created protocol object
   Changes       : Author, Date, Version, Reason
                   ********************************************************
                   PRUESSING, 20.04.2001, 1.0, Created
**************************************************************************/
void TProtLayer_CreateProtocol(TDevice * device)
{
   int i;
   char cProtName[30];
   char ConfigPath[50];
   struct TProtocol * prot = NULL;
   TProtocolMapEntry * newentry;

   /* count of prots... */
   int iProtCount = sizeof(ProtocolTable) / sizeof(struct TProtocolTable);

   assert(device);

   /*
   ** get the right protocol name from config file
   */
   sprintf(ConfigPath,"%s.Protocol",device->cName);
   TRepository_GetElementStr(ConfigPath, "SMANet", cProtName, sizeof(cProtName));

   /* Rufe den richtigen Konstruktor zum Erzeugen des Protokolls auf...*/
   for(i = 0; i < iProtCount; i++)
   {
      if (strstr(cProtName, ProtocolTable[i].ProtName ) != NULL )
      {
         assert(ProtocolTable[i].Constructor);
         prot = (ProtocolTable[i].Constructor)();
         YASDI_DEBUG((VERBOSE_MESSAGE,"Configured protocol for device '%5s' is: '%s'...\n", device->cName, ProtocolTable[i].ProtName  ));

         //Eintragen...
         newentry = os_malloc(sizeof(TProtocolMapEntry));
         assert(newentry);
         newentry->device   = device;
         newentry->protocol = prot;
         ADDHEAD( &ProtocolMap, &newentry->node );
      }
   }
}
Esempio n. 2
0
/**************************************************************************
   Description   : Monat als Text erhalten
   Parameter     : Zeiger auf einen char * Array
   Return-Value  : (none)
   Changes       : Author, 		Date, 		Version, 	Reason
                   ********************************************************
                   Dotterweich,	01.09.2007, 0.1, 		Created
**************************************************************************/
void GetMonat(char *Buffer, int Zeichen)
{
	time_t	jetzt;
	char	Temp[100] = {0};

	time(&jetzt);
    TRepository_GetElementStr(  "Grundeinstellungen.DatumsFormatDatei",
                                "",
                                Temp,
                                sizeof(Temp)-1);

    if(strncmp(Temp, "YYMMDD", sizeof(Temp)-1) == 0)
    {
		strftime(Buffer, Zeichen, "%y%m", localtime(&jetzt));
    }
    else if(strncmp(Temp, "YYYY-MM-DD", sizeof(Temp)-1) == 0)
    {
		strftime(Buffer, Zeichen, "%Y-%m", localtime(&jetzt));
    }
    else
    {
		strftime(Buffer, Zeichen, "%y%m", localtime(&jetzt));
    }
}
Esempio n. 3
0
/**************************************************************************
   Description   : Initialization of the Yasdi-Shared-Library
   Parameter     : cIniFileName = Pointer to the configuration file (INI-File)
                                  of yasdi; If this parameter is NULL yasdi
                                  will use the default configuration file
                                  "yasdi.ini" in the current directory
   Return-Value  : 0: ok, -1: error reading config file
   Changes       : Author, Date, Version, Reason
                   ********************************************************
                   PRUESSING, 23.12.2001, 1.0, Created
**************************************************************************/
SHARED_FUNCTION int yasdiInitialize(const char * cIniFileName,
                                    DWORD * pDriverCount)
{
   int iRes = 0;
   						   
   if (cIniFileName) strcpy( ProgPath, cIniFileName );
   else              ProgPath[0] = 0;
   
   //Construct first the repository (to get configs)
   TRepository_Init();
   
   /*
    ** Wo sollen saemtliche Debug-Meldungen ausgegeben werden?
    ** Unter Linux werden diese default nach "/dev/null" ausgeben sonst nach "stderr"
    */
   {
      FILE * fd = NULL;
      char DebugFile[100]={0};
      TRepository_GetElementStr( "Misc.DebugOutput","", 
                                 DebugFile, sizeof(DebugFile)-1 );
      if (strlen(DebugFile)>0)
      {
         //console stderr ?
         if     (strcmp(DebugFile, "stderr") == 0) fd = stderr;
         else if(strcmp(DebugFile, "stdout") == 0) fd = stdout;
         else
         {
            //into file           
         
            /* bei Relativ-Pfad in des Yasdi-Verzeichnis... */
            if(Tools_PathIsRelativ(DebugFile))
            {
               //Pfad relativ zum Konfiguationsfile...
               char p[200]={0};
               strcat(p,ProgPath);
               Tools_PathAdd(p, DebugFile);
               strcpy(DebugFile,p);
            }
            fd = fopen(DebugFile,"w");
         }
         if (fd)
         {
            /* Pufferung abschalten */
            setbuf(fd,0);
         }
      }
      
      //configure the debug output...
      os_setDebugOutputHandle(fd);
   }
   
   YASDI_DEBUG(( VERBOSE_MESSAGE,
                 "YASDI Library V" LIB_YASDI_VERSION_FULL " (%s)\n"
                 SMA_COPYRIGHT "\n"
                 "Compile time: " __TIME__  " " __DATE__ "\n\n",
                 os_GetOSIdentifier()));
   

   /*
    * Call the contructor of the SMAData-Layer...that's all
    */
   TSMAData_constructor();

   //Get the count of loaded drivers...
   assert(pDriverCount);
   *pDriverCount = TDriverLayer_GetDriverCount();

   if (0 == *pDriverCount)
   {
      YASDI_DEBUG((VERBOSE_WARNING,"WARNING: No YASDI drivers loaded! This makes no sense!\n"));
      iRes = -1;
   }

   /*Using Statistic Writer?*/
   TStatisticWriter_Constructor();
   
   return iRes;
}
Esempio n. 4
0
/**************************************************************************
   Description   : Einlesen des ErrechneteKanaele Bereiches der INI Datei
   Parameter     : (none)
   Return-Value  : (none)
   Changes       : Author, 		Date, 		Version, 	Reason
                   ********************************************************
                   Dotterweich,	24.08.2007, 0.1, 		Created
**************************************************************************/
void ErrechneteKanaeleINI(void)
{
    int		Zaehler = 1;
    char	Temp[100] = {0};
    char	TempText[20] = {0};
    int		TempZahl = 0;

    ErrechneteKanaeleAnzahl = InitAnzahl("ErrechneteKanaele.Anzahl", ERRECHNETEKANAELEMAX);

    for(Zaehler = 1; Zaehler <= ErrechneteKanaeleAnzahl; Zaehler++)
    {
        sprintf(Temp, "ErrechneteKanaele.Name_%i", Zaehler);
        TRepository_GetElementStr(	Temp,
                                    "",
                                    ErrechneteKanaeleName[Zaehler - 1],
                                    sizeof(ErrechneteKanaeleName[Zaehler - 1])-1);
    }

    for(Zaehler = 1; Zaehler <= ErrechneteKanaeleAnzahl; Zaehler++)
    {
        sprintf(Temp, "ErrechneteKanaele.Art_%i", Zaehler);
        TRepository_GetElementStr(	Temp,
                                    "",
                                    TempText,
                                    sizeof(TempText)-1);

        if(strncmp(TempText, "TagesDifferenz", sizeof(TempText)-1) == 0)
        {
            ErrechneteKanaeleArt[Zaehler - 1] = 1;

            sprintf(Temp, "ErrechneteKanaele.StellenNach_%i", Zaehler);
            TempZahl = InitAnzahl(Temp , STELLENMAX);
            ErrechneteKanaeleGenauigkeit[Zaehler - 1] = TempZahl;
            if (TempZahl > 0)
            {
                TempZahl++;
            }

            sprintf(Temp, "ErrechneteKanaele.StellenVor_%i", Zaehler);
            ErrechneteKanaeleZeichen[Zaehler - 1] = TempZahl + InitAnzahl(Temp , STELLENMAX);
        }
        else
        {
            ErrechneteKanaeleArt[Zaehler - 1] = 0;
        }
    }

    for(Zaehler = 1; Zaehler <= ErrechneteKanaeleAnzahl; Zaehler++)
    {
        sprintf(Temp, "ErrechneteKanaele.Kanal_%i", Zaehler);
        TRepository_GetElementStr(	Temp,
                                    "",
                                    ErrechneteKanaeleKanal[Zaehler - 1],
                                    sizeof(ErrechneteKanaeleKanal[Zaehler - 1])-1);
    }

    ErrechneteKanaeleErrechnungsIntervallZeit = TRepository_GetElementInt("ErrechneteKanaele.ErrechnungsIntervall", 0);

    TRepository_GetElementStr(  "ErrechneteKanaele.TempVariablenDatei",
                                "./errechnungs.variablen.datei.tmp",
                                ErrechneteKanaeleTempDateiName,
                                sizeof(ErrechneteKanaeleTempDateiName)-1);

    ErrechneteKanaeleLadenTemp();
}
Esempio n. 5
0
/**************************************************************************
   Description   : Einlesen des Loggen Bereiches der INI Datei
   Parameter     : (none)
   Return-Value  : (none)
   Changes       : Author, 		Date, 		Version, 	Reason
                   ********************************************************
                   Dotterweich,	21.08.2007, 0.1, 		Created
**************************************************************************/
void LoggenINI(void)
{
    int     Zaehler = 1;
    char    Temp[100] = {0};

	{
        LogGesamtOutputTypeAnzahl = InitAnzahl("Loggen.LogGesamtOutputTypeAnzahl", OUTPUTTYPEMAX);

        InitOutputType(LogGesamtOutputTypeAnzahl, LogGesamtOutputType, "Loggen.LogGesamtOutputType");

        for(Zaehler = 1; Zaehler <= LogGesamtOutputTypeAnzahl; Zaehler++)
        {
            sprintf(Temp, "Loggen.LogGesamtOutput_%i", Zaehler);
            TRepository_GetElementStr(  Temp,
                                        "",
                                        LogGesamtOutput[Zaehler - 1],
                                        sizeof(LogGesamtOutput[Zaehler - 1])-1);
        }

        InitOutputFormat(LogGesamtOutputTypeAnzahl, LogGesamtOutputFormat, "Loggen.LogGesamtOutputFormat");

        LogGesamtIntervallZeit = TRepository_GetElementInt("Loggen.LogGesamtIntervall", 0);
	}

	{
        LogOutputTypeAnzahl = InitAnzahl("Loggen.LogOutputTypeAnzahl", OUTPUTTYPEMAX);

        InitOutputType(LogOutputTypeAnzahl, LogOutputType, "Loggen.LogOutputType");

        for(Zaehler = 1; Zaehler <= LogOutputTypeAnzahl; Zaehler++)
        {
            sprintf(Temp, "Loggen.LogOutput_%i", Zaehler);
            TRepository_GetElementStr(  Temp,
                                        "",
                                        LogOutput[Zaehler - 1],
                                        sizeof(LogOutput[Zaehler - 1])-1);
        }

        InitOutputFormat(LogOutputTypeAnzahl, LogOutputFormat, "Loggen.LogOutputFormat");

        LogIntervallZeit = TRepository_GetElementInt("Loggen.LogIntervall", 0);

        LogKanalAnzahl = InitAnzahl("Loggen.LogKanalAnzahl", KANALMAX);

        for(Zaehler = 1; Zaehler <= LogKanalAnzahl; Zaehler++)
        {
            sprintf(Temp, "Loggen.LogKanal_%i", Zaehler);
            TRepository_GetElementStr(  Temp,
                                        "",
                                        LogKanal[Zaehler - 1],
                                        sizeof(LogKanal[Zaehler - 1])-1);
        }
	}

	{
        LogMonatOutputTypeAnzahl = InitAnzahl("Loggen.LogMonatOutputTypeAnzahl", OUTPUTTYPEMAX);

        InitOutputType(LogMonatOutputTypeAnzahl, LogMonatOutputType, "Loggen.LogMonatOutputType");

        for(Zaehler = 1; Zaehler <= LogMonatOutputTypeAnzahl; Zaehler++)
        {
            sprintf(Temp, "Loggen.LogMonatOutput_%i", Zaehler);
            TRepository_GetElementStr(  Temp,
                                        "",
                                        LogMonatOutput[Zaehler - 1],
                                        sizeof(LogMonatOutput[Zaehler - 1])-1);
        }

        InitOutputFormat(LogMonatOutputTypeAnzahl, LogMonatOutputFormat, "Loggen.LogMonatOutputFormat");

		LogMonatLetzteIntervallZeit = TagZeit;							// LogMonat erst um 0:00 wieder starten

        LogMonatWRAnzahl = InitAnzahl("Loggen.LogMonatWRAnzahl", KANALMAX);

        for(Zaehler = 1; Zaehler <= LogMonatWRAnzahl; Zaehler++)
        {
            sprintf(Temp, "Loggen.LogMonatWR_%i", Zaehler);
            TRepository_GetElementStr(  Temp,
                                        "",
                                        LogMonatWR[Zaehler - 1],
                                        sizeof(LogMonatWR[Zaehler - 1])-1);
        }

        LogMonatKanalAnzahl = InitAnzahl("Loggen.LogMonatKanalAnzahl", KANALMAX);

        for(Zaehler = 1; Zaehler <= LogMonatKanalAnzahl; Zaehler++)
        {
            sprintf(Temp, "Loggen.LogMonatKanal_%i", Zaehler);
            TRepository_GetElementStr(  Temp,
                                        "",
                                        LogMonatKanal[Zaehler - 1],
                                        sizeof(LogMonatKanal[Zaehler - 1])-1);
        }
	}
}