thermometers/thermometers.h

Sat, 16 May 2015 17:39:30 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 16 May 2015 17:39:30 +0200
changeset 362
c92651a54969
parent 145
1396350141cf
permissions
-rw-r--r--

Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0

#ifndef	_THERMOMETERS_H
#define	_THERMOMETERS_H


#define TRUE 1
#define FALSE 0

#include "../config.h"

#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <stdarg.h>
#include <string.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <time.h>
#include <fcntl.h>
#include <syslog.h>
#include <unistd.h>
#include <errno.h>
#include <signal.h>
#include <getopt.h>
#include <limits.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <poll.h>


/* mosquitto */
//#include <mosquitto.h>

#ifdef HAVE_WIRINGPI_H
/* wiringPi */
#include <wiringPi.h>
#include <pcf8574.h>
#include <lcd.h>

#endif

#define TRUE 1
#define FALSE 0

#define MBSE_SS(x) (x)?(x):"(null)"

/* rdconfig.c */
typedef struct _key_list {
    char	*key;
    int		(*prc)(char **);
    char	**dest;
} key_list;

typedef struct _w1_therm {
    struct _w1_therm    *next;
    char                *master;                /* Master for this device       */
    int                 bus;                    /* Reserved for ds2482-800      */
    char                *name;                  /* Name of this device          */
    char                *alias;                 /* Friendly name                */
    int                 present;                /* 1=present, 0=absent          */
    int                 lastval;                /* Last valid value             */
    int			update;			/* Value updated		*/
} w1_therm;

typedef struct _rc_switch {
    struct _rc_switch	*next;
    char		*address;		/* Address code			*/
    char		*alias;			/* Friendly name		*/
} rc_switch;

typedef struct _sys_config {
    char		*name;			/* Configuration name		*/
    int			my_port;		/* my client/server port	*/
    w1_therm		*w1therms;		/* 1-wire temp sensors		*/
#ifdef HAVE_WIRINGPI_H
    int			lcd_cols;		/* LCD display columns		*/
    int			lcd_rows;		/* LCD display rows		*/
    int			rx433;			/* 433 MHz receiver pin		*/
    int			tx433;			/* 433 MHz transmitter pin	*/
    rc_switch		*rcswitch;		/* 433 MHz RC Power switches	*/
#endif
} sys_config;


void killconfig(void);
int  rdconfig(char *);


/* xutil.c */
char *xmalloc(size_t);
char *xstrcpy(char *);
char *xstrcat(char *, char *);


#ifdef HAVE_WIRINGPI_H

/* lcd-pcf8574.c */
// Defines for the pcf8574 Pi LCD interface board
#define AF_BASE         100

#define AF_RS           (AF_BASE + 0)
#define AF_RW           (AF_BASE + 1)
#define AF_E            (AF_BASE + 2)
#define AF_BACKLIGHT    (AF_BASE + 3)
#define AF_DB4          (AF_BASE + 4)
#define AF_DB5          (AF_BASE + 5)
#define AF_DB6          (AF_BASE + 6)
#define AF_DB7          (AF_BASE + 7)

void setBacklight (int);
int  initLCD (int, int);
void mb_lcdPutchar(const int, unsigned char);
void mb_lcdPuts(const int, const char *);
void mb_lcdClear(const int);



#endif


#endif

mercurial