mirror of
https://github.com/agdsn/ancient-weatherstation.git
synced 2026-06-19 23:07:59 +00:00
code cleaned
git-svn-id: file:///home/jan/tmp/wetterstation/trunk@201 dd492736-c11a-0410-ad51-8c26713eaf7f
This commit is contained in:
@@ -28,7 +28,7 @@ $(BIN_NAME): $(OBJS)
|
||||
@ $(LD) $(DEBUG) $(NOLOG) -L$$(pg_config --libdir)/pgsql -lpq $(LDFLAS) $(BIN_NAME) $(OBJS)
|
||||
@ echo Binary $(BIN_NAME) ist fertig!
|
||||
|
||||
# Abhängigkeiten
|
||||
# Abhaengigkeiten
|
||||
main.o: main.c main.h definitions.h config.h input.h
|
||||
config.o: config.c config.h definitions.h
|
||||
input.o: input.c input.h main.h config.h definitions.h process.h
|
||||
@@ -62,14 +62,14 @@ install:
|
||||
@ install -m644 COPYING $(DESTDIR)$(DOCDIR)
|
||||
|
||||
|
||||
# Aufräumnen (alle Object-Files löschen)
|
||||
# Aufraeumnen (alle Object-Files loeschen)
|
||||
cleanup:
|
||||
@ echo "Räume auf..."
|
||||
@ echo "Raeume auf..."
|
||||
@ echo "...entferne Object-Files:"
|
||||
@ echo " " $(OBJS)
|
||||
@ $(RM) -f $(OBJS)
|
||||
|
||||
clean: cleanup
|
||||
@ echo "...lösche binary:"
|
||||
@ echo "...loesche binary:"
|
||||
@ echo " " $(BIN_NAME)
|
||||
@ rm -f $(BIN_NAME)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
config.c -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
@@ -42,7 +42,7 @@ static read_verbose_flag(const char *, void *);
|
||||
static int flag_handler(int *, int , const char *);
|
||||
|
||||
|
||||
/* Zuordnung zwischen Schlüsselwörtern in der Config, Der Funktion, die diese auswertet
|
||||
/* Zuordnung zwischen Schluesselwoertern in der Config, Der Funktion, die diese auswertet
|
||||
* und dem eld in der Options-Struktur */
|
||||
static const struct config_keyword keywords[] = {
|
||||
/* keyword handler variable address default */
|
||||
@@ -119,22 +119,22 @@ int read_config(const char *file, int reset){
|
||||
int lm = 0; /* Zeilen-Nummer */
|
||||
|
||||
|
||||
/* Optionen mit default-werten füllen */
|
||||
/* Optionen mit default-werten fuellen */
|
||||
if(reset){
|
||||
for (i = 0; keywords[i].keyword[0]; i++)
|
||||
if (keywords[i].def[0])
|
||||
keywords[i].handler(keywords[i].def, keywords[i].var);
|
||||
}
|
||||
|
||||
/* config-file öffnen */
|
||||
/* config-file oeffnen */
|
||||
if (!(in = fopen(file, "r"))) {
|
||||
#ifndef NO_LOGING
|
||||
if(get_flag(LOG_ERROR_FLAG)){
|
||||
sprintf(get_error_buffer(), "Kann Config-File: %s nicht öffnen!",file);
|
||||
sprintf(get_error_buffer(), "Kann Config-File: %s nicht oeffnen!",file);
|
||||
log_error(get_error_buffer());
|
||||
}
|
||||
#endif
|
||||
DEBUGOUT2("Kann Config-File: %s nicht öffnen!\n", file);
|
||||
DEBUGOUT2("Kann Config-File: %s nicht oeffnen!\n", file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -142,10 +142,10 @@ int read_config(const char *file, int reset){
|
||||
while (fgets(buffer, CONFIG_BUFFERSIZE, in)) {
|
||||
lm++;
|
||||
|
||||
/* Zeilenvorschübe gegen null-terminierungs-Zeichen ersetzen */
|
||||
/* Zeilenvorschuebe gegen null-terminierungs-Zeichen ersetzen */
|
||||
if (strchr(buffer, '\n')) *(strchr(buffer, '\n')) = '\0';
|
||||
|
||||
/* Originlzeile für eventuelle log-, bzw. debug-meldungen */
|
||||
/* Originlzeile fuer eventuelle log-, bzw. debug-meldungen */
|
||||
strcpy(orig, buffer);
|
||||
|
||||
/* Kommentazeichen gegen null-terminierungs-Zeichen ersetzen und damit alles dahinter ignorieren */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
config.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
definitions.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
|
||||
|
||||
/*Alle möglichen Definitionen, die in allen code-schnipseln benötigt werden*/
|
||||
/*Alle moeglichen Definitionen, die in allen code-schnipseln benoetigt werden*/
|
||||
|
||||
/* Sensor definitionen ------------------------------------------------- */
|
||||
#define FERNB 0x07 /* Funkfernbedienung */
|
||||
@@ -56,7 +56,7 @@
|
||||
#define ERROR_TIMEOUT "sensor-rs232interface: keine Daten - timeout-Fehler\n"
|
||||
#define ERROR_POLLING "sensor-rs232interface: keine Daten - polling-Fehler\n"
|
||||
#define ERROR_READ "sensor-rs232interface: Fehler beim Lesen\n"
|
||||
#define ERROR_LOGFILE "Log-Error: Kann Logfile nicht öffnen\n"
|
||||
#define ERROR_LOGFILE "Log-Error: Kann Logfile nicht oeffnen\n"
|
||||
#define ERROR_FORK "Fork-Fehler: Kann den Prozess nicht in den Hintergrund schieben\n"
|
||||
#define ERROR_SEIINST "Signal-Fehler: Kann Signalhandler zum beenden nicht installieren\n"
|
||||
|
||||
@@ -70,12 +70,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* Puffergrößen -------------------------------------------------------- */
|
||||
#define LOG_BUFFERSIZE 100 /* Größe für den Log-Puffer in process.c */
|
||||
#define ERR_BUFFERSIZE 512 /* Größe für den error-Puffer in main.c */
|
||||
#define INPUT_BUFFERSIZE 8 /* Größe für den Input-Puffer in input.c */
|
||||
#define CONFIG_BUFFERSIZE 512 /* Größe des Puffers zum Config-einlesen */
|
||||
#define QUERY_BUFFERSIZE 512 /* Größe des Zeichenpuffers für SQL-Anfragen */
|
||||
/* Puffergroeßen -------------------------------------------------------- */
|
||||
#define LOG_BUFFERSIZE 100 /* Groeße fuer den Log-Puffer in process.c */
|
||||
#define ERR_BUFFERSIZE 512 /* Groeße fuer den error-Puffer in main.c */
|
||||
#define INPUT_BUFFERSIZE 8 /* Groeße fuer den Input-Puffer in input.c */
|
||||
#define CONFIG_BUFFERSIZE 512 /* Groeße des Puffers zum Config-einlesen */
|
||||
#define QUERY_BUFFERSIZE 512 /* Groeße des Zeichenpuffers fuer SQL-Anfragen */
|
||||
|
||||
|
||||
/* Timeout-Zeiten ------------------------------------------------------ */
|
||||
|
||||
+15
-15
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
input.c -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
@@ -59,7 +59,7 @@ static int set_port()
|
||||
if ((fd = open(global_opts.device,O_RDONLY | O_NONBLOCK | O_NOCTTY | O_NDELAY)) < 0)
|
||||
exit_error(ERROR_OPEN);
|
||||
|
||||
/* Erstmal alles zurücksetzen*/
|
||||
/* Erstmal alles zuruecksetzen*/
|
||||
cfmakeraw(&options);
|
||||
/* Uebertragungsgeschwindigkeit 19200 Baud */
|
||||
cfsetispeed(&options, B19200);
|
||||
@@ -74,7 +74,7 @@ static int set_port()
|
||||
/* Local-Flags brauchmer auch keine*/
|
||||
options.c_lflag = 0;
|
||||
|
||||
/* Zeug für die Flusskontrolle */
|
||||
/* Zeug fuer die Flusskontrolle */
|
||||
//options.c_cc[VMIN] = 1;
|
||||
//options.c_cc[VTIME] = 5;
|
||||
|
||||
@@ -94,13 +94,13 @@ static int set_port()
|
||||
int read_port(){
|
||||
fd = set_port();
|
||||
int len=0; /* Anzahl gelesener Daten */
|
||||
int i, readlen =1; /* Laufvariable, Lesezähler */
|
||||
int i, readlen =1; /* Laufvariable, Lesezaehler */
|
||||
u_char buffer[INPUT_BUFFERSIZE], *temp = NULL; /* Lesepuffer, Temp-Zeiger */
|
||||
struct pollfd pfd = {fd, POLLIN, (short)NULL}; /* polling-Optionen */
|
||||
|
||||
temp = buffer; /* Temporärer Zeiger bekommt die Anfangsaddresse vom Puffer */
|
||||
temp = buffer; /* Temporaerer Zeiger bekommt die Anfangsaddresse vom Puffer */
|
||||
|
||||
add_clean(clean_port, &fd); /* Callbackfunktion zum Aufräumen registrieren */
|
||||
add_clean(clean_port, &fd); /* Callbackfunktion zum Aufraeumen registrieren */
|
||||
|
||||
|
||||
DEBUGOUT1("\nWarte auf Daten\n\n");
|
||||
@@ -108,10 +108,10 @@ int read_port(){
|
||||
do {
|
||||
if((len = poll(&pfd, 1, INPUT_TIMEOUT)) > 0){ /* warten auf Eingabepuffer */
|
||||
len = read(fd, temp, 1); /* Zeichenweise lesen */
|
||||
if(readlen == 1){ /* Solange noch nix verwertbares gelesen wurde auf das Startbyte prüfen */
|
||||
if(readlen == 1){ /* Solange noch nix verwertbares gelesen wurde auf das Startbyte pruefen */
|
||||
if(*temp == STX){
|
||||
temp++; /* Wenn startbyte gefunden Zeiger auf das 2. Puffer-Element setzen */
|
||||
readlen++; /* Und Lese-Zähler erhöhen */
|
||||
readlen++; /* Und Lese-Zaehler erhoehen */
|
||||
}
|
||||
} else { /* Wenn schon was relevantes gelesen wurde */
|
||||
if(readlen == 8 && *temp == ETX){ /* Wenn schon 8 Byte gelesen wurden und das letzte Byte das Stoppbyte ist */
|
||||
@@ -120,19 +120,19 @@ int read_port(){
|
||||
DEBUGOUT2("%x ",buffer[i]);
|
||||
DEBUGOUT1("\n");
|
||||
|
||||
check_data(readlen,buffer); /* Daten nochmals Prüfen und verarbeiten */
|
||||
check_data(readlen,buffer); /* Daten nochmals Pruefen und verarbeiten */
|
||||
|
||||
DEBUGOUT1("------------------------------------------\n");
|
||||
|
||||
readlen = 1; /* Lesezähler zurücksetzen */
|
||||
readlen = 1; /* Lesezaehler zuruecksetzen */
|
||||
temp = buffer; /* Temp.-Zeiger wieder auf Pufferanfang setzen */
|
||||
} else { /* Wenn schon was relevantes da war, aber noch keine 8 byte incl. Stoppbyte */
|
||||
if(*temp == ETX || readlen >= 8){ /* Wenn das aktuelle byte das Stoppbyte oder das 8. Byte, dann sind die daten nicht ok */
|
||||
readlen = 1; /* Lesezähler zurücksetzen */
|
||||
readlen = 1; /* Lesezaehler zuruecksetzen */
|
||||
temp = buffer; /* Temp-Zeiger auf Pufferanfang */
|
||||
} else { /* Sonst */
|
||||
readlen++; /* Lesezähler erhöhen */
|
||||
temp++; /* Temp.-Zeiger auf das nächste element setzen */
|
||||
readlen++; /* Lesezaehler erhoehen */
|
||||
temp++; /* Temp.-Zeiger auf das naechste element setzen */
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -145,12 +145,12 @@ int read_port(){
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Überprüfung, ob die Struktur der Daten stimmt
|
||||
/* Ueberpruefung, ob die Struktur der Daten stimmt
|
||||
* es sollten 8 Byte ankommen:
|
||||
* <STX><Typ><W1><W2><W3><W4><W5><EXT>
|
||||
* wobei <STX> = 02h
|
||||
* und <EXT> = 03h
|
||||
* Bei <Typ>,<W1>...<W7> ist bit 7 (MSB) immer gesetzt, gehört also nicht zu den Daten!
|
||||
* Bei <Typ>,<W1>...<W7> ist bit 7 (MSB) immer gesetzt, gehoert also nicht zu den Daten!
|
||||
* Im <Typ>-Byte sind die unteren 4 bit die Addresse und die oberen 3 (weil 7. ist ja nicht benutzt)
|
||||
* der Typ des Sensors.
|
||||
* Die Typenzuordnung steht in der definitions.h.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
input.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
@@ -26,5 +26,5 @@
|
||||
|
||||
/* Funktionen */
|
||||
|
||||
/* Schnittstelle öffnen + lesen */
|
||||
/* Schnittstelle oeffnen + lesen */
|
||||
int read_port();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
main.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
@@ -41,8 +41,8 @@ typedef struct {
|
||||
#endif
|
||||
} w_opts;
|
||||
|
||||
/* Aufräumfunktionen */
|
||||
/* TODO: sollen Funktionen werden, mit denen die eintelnen Teile funktionen registrieren können, die aufräiumen
|
||||
/* Aufraeumfunktionen */
|
||||
/* TODO: sollen Funktionen werden, mit denen die eintelnen Teile funktionen registrieren koennen, die aufraeiumen
|
||||
* (Verbindung schließen, file schließen, ...) */
|
||||
typedef struct clean_struct *clean_struct_ptr;
|
||||
typedef struct clean_struct {
|
||||
@@ -59,7 +59,7 @@ typedef struct clean_struct {
|
||||
void exit_error(char*);
|
||||
|
||||
/* Ein Flag bekommen
|
||||
* Argument: Maske für das Flag, siehe definitions.h */
|
||||
* Argument: Maske fuer das Flag, siehe definitions.h */
|
||||
int get_flag(int);
|
||||
|
||||
#ifndef NO_LOGING
|
||||
@@ -72,18 +72,18 @@ void log_error(char *);
|
||||
* 2. Argument: Log-Message */
|
||||
void log_data(time_t, char *);
|
||||
|
||||
/* Gibt _EINEN_ Puffer für das Zusammensetzen
|
||||
* der Fehler-Zeichenketten zurück.
|
||||
/* Gibt _EINEN_ Puffer fuer das Zusammensetzen
|
||||
* der Fehler-Zeichenketten zurueck.
|
||||
* Es sollte wirklich bei jedem Aufruf der selbe
|
||||
* Puffer sein */
|
||||
char *get_error_buffer();
|
||||
#endif
|
||||
|
||||
/* Ein neues Clean-Element anfügen. Ein Clean-Element ist eine Datenstruktur, die
|
||||
/* Ein neues Clean-Element anfuegen. Ein Clean-Element ist eine Datenstruktur, die
|
||||
* einen Pointer auf eine Funktion vom Typ
|
||||
* void func(void *data),
|
||||
* einen Zeiger auf beliebige Daten und einen Zeiger auf das nächste Element hält.
|
||||
* Die Funktionen werden beim regulären beenden des Programmes aufgerufen um zum bsp.
|
||||
* einen Zeiger auf beliebige Daten und einen Zeiger auf das naechste Element haelt.
|
||||
* Die Funktionen werden beim regulaeren beenden des Programmes aufgerufen um zum bsp.
|
||||
* datenbankverbindungen zu schließen, etc. */
|
||||
void add_clean(void (*func)(void *data), void *data);
|
||||
|
||||
|
||||
+23
-23
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
process.c -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
@@ -54,7 +54,7 @@ static void check_log_buffer();
|
||||
static char* prepend_type_address(u_char, u_char);
|
||||
|
||||
/* globale Variablen */
|
||||
char *log_buffer = NULL; /* Puffer für die Log-Ausgabe */
|
||||
char *log_buffer = NULL; /* Puffer fuer die Log-Ausgabe */
|
||||
int last_rain_count = -1; /* Letzter gemessener Wasserstand */
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ void process_data(time_t timestamp, u_char *buffer){
|
||||
|
||||
/* Wertkonvertierungen --------------------------------------------------- */
|
||||
|
||||
/* Wertkonvertierungen für den 'einfachen' Außensensor */
|
||||
/* Wertkonvertierungen fuer den 'einfachen' Außensensor */
|
||||
static auss1_data process_auss1(time_t timestamp, u_char address, u_char *buffer){
|
||||
auss1_data data; /* Datenstruktur */
|
||||
|
||||
@@ -123,7 +123,7 @@ static auss1_data process_auss1(time_t timestamp, u_char address, u_char *buffer
|
||||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den 'besseren' Außensensor */
|
||||
/* Wertkonvertierungen fuer den 'besseren' Außensensor */
|
||||
static auss2_data process_auss2(time_t timestamp, u_char address, u_char *buffer){
|
||||
auss2_data data; /* Datenstruktur */
|
||||
|
||||
@@ -146,32 +146,32 @@ static auss2_data process_auss2(time_t timestamp, u_char address, u_char *buffer
|
||||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den Regensensor (ein Zählschritt = 370ml/m^2)*/
|
||||
/* Wertkonvertierungen fuer den Regensensor (ein Zaehlschritt = 370ml/m^2)*/
|
||||
static regen_data process_regen(time_t timestamp, u_char address, u_char *buffer){
|
||||
regen_data data; /* Datenstruktur */
|
||||
int new_rain_count = 0; /* Neuer Zählerstand */
|
||||
int now_rain_count = 0; /* Delta-Zählerstand */
|
||||
int new_rain_count = 0; /* Neuer Zaehlerstand */
|
||||
int now_rain_count = 0; /* Delta-Zaehlerstand */
|
||||
|
||||
data.timestamp = timestamp; /* Zeitstempel */
|
||||
data.address = address; /* Addresse */
|
||||
new_rain_count = ((buffer[2] & 0x1F) << 7) | remove_msb(buffer[3]); /* Niederschlagszähler */
|
||||
new_rain_count = ((buffer[2] & 0x1F) << 7) | remove_msb(buffer[3]); /* Niederschlagszaehler */
|
||||
|
||||
if(last_rain_count == -1) /* Nach Programmstart Zähler initialisieren */
|
||||
if(last_rain_count == -1) /* Nach Programmstart Zaehler initialisieren */
|
||||
last_rain_count = new_rain_count;
|
||||
|
||||
now_rain_count = new_rain_count - last_rain_count; /* neuen Niederschlag berechnen */
|
||||
|
||||
if(now_rain_count < 0){ /* Wenn Integerüberlauf im Sensor */
|
||||
now_rain_count = (0x3FFF - last_rain_count) + new_rain_count; /* Dann letzten gemessenen Wert vom Max-Integer-Wert abziehen und neuen Zählwert dazurechnen */
|
||||
DEBUGOUT1("Integer-Überlauf\n");
|
||||
if(now_rain_count < 0){ /* Wenn Integerueberlauf im Sensor */
|
||||
now_rain_count = (0x3FFF - last_rain_count) + new_rain_count; /* Dann letzten gemessenen Wert vom Max-Integer-Wert abziehen und neuen Zaehlwert dazurechnen */
|
||||
DEBUGOUT1("Integer-Ueberlauf\n");
|
||||
}
|
||||
|
||||
data.counter = (now_rain_count * 370); /* Ein Zählschritt entspricht 370ml/m^2, also änderung mit 370 multiplizieren und zuweisen */
|
||||
data.counter = (now_rain_count * 370); /* Ein Zaehlschritt entspricht 370ml/m^2, also aenderung mit 370 multiplizieren und zuweisen */
|
||||
|
||||
last_rain_count = new_rain_count; /* Zähler neu setzen */
|
||||
last_rain_count = new_rain_count; /* Zaehler neu setzen */
|
||||
|
||||
DEBUGOUT2("Regensensor an Addresse %i\n", address);
|
||||
DEBUGOUT3("Zähler: %d Differenz: %d\n", new_rain_count,now_rain_count);
|
||||
DEBUGOUT3("Zaehler: %d Differenz: %d\n", new_rain_count,now_rain_count);
|
||||
DEBUGOUT2("Niederschlag: %dml/m^2\n", data.counter);
|
||||
|
||||
#ifndef NO_LOGING
|
||||
@@ -185,7 +185,7 @@ static regen_data process_regen(time_t timestamp, u_char address, u_char *buffer
|
||||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den Windsensor */
|
||||
/* Wertkonvertierungen fuer den Windsensor */
|
||||
static winds_data process_winds(time_t timestamp, u_char address, u_char *buffer){
|
||||
winds_data data; /* Datenstruktur */
|
||||
|
||||
@@ -209,7 +209,7 @@ static winds_data process_winds(time_t timestamp, u_char address, u_char *buffer
|
||||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den Innensensor */
|
||||
/* Wertkonvertierungen fuer den Innensensor */
|
||||
static innen_data process_innen(time_t timestamp, u_char address, u_char *buffer){
|
||||
innen_data data; /* Datenstruktur */
|
||||
|
||||
@@ -233,7 +233,7 @@ static innen_data process_innen(time_t timestamp, u_char address, u_char *buffer
|
||||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den Helligkeitssensor */
|
||||
/* Wertkonvertierungen fuer den Helligkeitssensor */
|
||||
static helli_data process_helli(time_t timestamp, u_char address, u_char *buffer){
|
||||
helli_data data; /* Datenstruktur */
|
||||
|
||||
@@ -257,7 +257,7 @@ static helli_data process_helli(time_t timestamp, u_char address, u_char *buffer
|
||||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für das Pyranometer */
|
||||
/* Wertkonvertierungen fuer das Pyranometer */
|
||||
static pyano_data process_pyano(time_t timestamp, u_char address, u_char *buffer){
|
||||
pyano_data data; /* Datenstruktur */
|
||||
|
||||
@@ -284,7 +284,7 @@ static pyano_data process_pyano(time_t timestamp, u_char address, u_char *buffer
|
||||
|
||||
/* Verschiedenes ----------------------------------------------------------*/
|
||||
|
||||
/* einen vorzeichenbehafteten 14-Bit Binärwert in einen Int umwandeln*/
|
||||
/* einen vorzeichenbehafteten 14-Bit Binaerwert in einen Int umwandeln*/
|
||||
static int convert_signed_int(u_char hi_byte, u_char lo_byte){
|
||||
int val = 0;
|
||||
val = convert_unsigned_int(hi_byte,lo_byte);
|
||||
@@ -294,7 +294,7 @@ static int convert_signed_int(u_char hi_byte, u_char lo_byte){
|
||||
return val;
|
||||
}
|
||||
|
||||
/* einen 14-Bit Binärwert in einen Int umwandeln*/
|
||||
/* einen 14-Bit Binaerwert in einen Int umwandeln*/
|
||||
static unsigned int convert_unsigned_int(u_char hi_byte, u_char lo_byte){
|
||||
return (remove_msb(hi_byte) << 7) | remove_msb(lo_byte);
|
||||
}
|
||||
@@ -332,7 +332,7 @@ int check_msb_set(u_char byte){
|
||||
|
||||
#ifndef NO_LOGING
|
||||
|
||||
/* Prüfen ob Puffer für Logausgaben angelegt und renn nicht, dann anlegen */
|
||||
/* Pruefen ob Puffer fuer Logausgaben angelegt und renn nicht, dann anlegen */
|
||||
static void check_log_buffer(){
|
||||
if (log_buffer == NULL){
|
||||
log_buffer = malloc(sizeof(char)*LOG_BUFFERSIZE);
|
||||
@@ -340,7 +340,7 @@ static void check_log_buffer(){
|
||||
}
|
||||
|
||||
/* In der Log-Zeile die Addresse und den Typ des Sensors davorbauen
|
||||
* gibt die Addresse zurück, an der die Werte weitergeschrieben werden können */
|
||||
* gibt die Addresse zurueck, an der die Werte weitergeschrieben werden koennen */
|
||||
static char* prepend_type_address(u_char type, u_char address){
|
||||
return (log_buffer + sprintf(log_buffer, "Sens: %i:%i - ", type, address));
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
process.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
write.c -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
@@ -28,7 +28,7 @@
|
||||
*
|
||||
* Sollte irgend jemand das Programm weiter verwenden,
|
||||
* jedoch die Daten anders oder woandershin wegschreiben
|
||||
* wollen, so müssen nur diese Funktionen neu implementiert
|
||||
* wollen, so muessen nur diese Funktionen neu implementiert
|
||||
* werden.
|
||||
*/
|
||||
|
||||
@@ -111,7 +111,7 @@ static void check_create_query_buffer(){
|
||||
}
|
||||
|
||||
/* Guckt ob Verbindung da und versucht aufzubauen.
|
||||
* gibt 1 zurück, wenn erfolgreich, sonst 0 */
|
||||
* gibt 1 zurueck, wenn erfolgreich, sonst 0 */
|
||||
static int pg_connect(){
|
||||
if(PQstatus(connection) != CONNECTION_OK){
|
||||
if (connection == NULL){
|
||||
@@ -120,7 +120,7 @@ static int pg_connect(){
|
||||
snprintf(conn_string, 512, "host=%s dbname=%s user=%s password=%s connect_timeout=%s", global_opts.pg_host, global_opts.pg_database, global_opts.pg_user, global_opts.pg_pass, global_opts.pg_timeout);
|
||||
}
|
||||
connection = PQconnectdb(conn_string); /* Connection aufbauen */
|
||||
add_clean(clean_write, connection); /* Callbackfunktion zum Aufräumen registrieren */
|
||||
add_clean(clean_write, connection); /* Callbackfunktion zum Aufraeumen registrieren */
|
||||
} else {
|
||||
PQreset(connection); /* Connecion resetten */
|
||||
}
|
||||
@@ -149,13 +149,13 @@ static void pg_insert(char *query){
|
||||
log_error(get_error_buffer());
|
||||
#endif
|
||||
} else {
|
||||
DEBUGOUT2("Query: '%s' ausgeführt\n", query);
|
||||
DEBUGOUT2("Query: '%s' ausgefuehrt\n", query);
|
||||
}
|
||||
PQclear(res);
|
||||
}
|
||||
}
|
||||
|
||||
/* Callbackfunktion zum Aufräume.
|
||||
/* Callbackfunktion zum Aufraeume.
|
||||
* Schliesst die Verbindung zur Datenbank */
|
||||
static void clean_write(void *data){
|
||||
PGconn *conn = data;
|
||||
|
||||
+10
-10
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
write.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
@@ -25,16 +25,16 @@
|
||||
|
||||
#include <time.h>
|
||||
|
||||
/* Datenstrukturen für die einzelnen Sensoren ------------------------------- */
|
||||
/* Datenstrukturen fuer die einzelnen Sensoren ------------------------------- */
|
||||
|
||||
/* Datenstruktur für den 'einfachen' Außensensor */
|
||||
/* Datenstruktur fuer den 'einfachen' Außensensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
int temp; /*Temparatur*/
|
||||
} auss1_data ;
|
||||
|
||||
/* Datenstruktur für den 'besseren' Außensensor */
|
||||
/* Datenstruktur fuer den 'besseren' Außensensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
@@ -42,14 +42,14 @@ typedef struct {
|
||||
unsigned int hum; /*Luftfeuchte*/
|
||||
} auss2_data;
|
||||
|
||||
/* Datenstruktur für den Regensensor */
|
||||
/* Datenstruktur fuer den Regensensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
unsigned int counter; /*Zählerstand*/
|
||||
unsigned int counter; /*Zaehlerstand*/
|
||||
} regen_data;
|
||||
|
||||
/* Datenstruktur für den Windsensor */
|
||||
/* Datenstruktur fuer den Windsensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
@@ -58,7 +58,7 @@ typedef struct {
|
||||
unsigned int richt; /*Windrichtung*/
|
||||
} winds_data;
|
||||
|
||||
/* Datenstruktur für den Innensensor */
|
||||
/* Datenstruktur fuer den Innensensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
@@ -67,7 +67,7 @@ typedef struct {
|
||||
unsigned int press; /*Luftdruck*/
|
||||
} innen_data;
|
||||
|
||||
/* Datenstruktur für den Helligkeitssensor */
|
||||
/* Datenstruktur fuer den Helligkeitssensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
@@ -76,7 +76,7 @@ typedef struct {
|
||||
unsigned int abslum; /*Absolute Helligkeit*/
|
||||
} helli_data;
|
||||
|
||||
/* Datenstruktur für das Pyranometer */
|
||||
/* Datenstruktur fuer das Pyranometer */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
|
||||
Reference in New Issue
Block a user