/************************************************************************** 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 ); } } }
/************************************************************************** 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)); } }
/************************************************************************** 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; }
/************************************************************************** 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(); }
/************************************************************************** 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); } } }