#ifndef __RXDCB_H
#define __RXDCB_H
/*
// #####################################################
*/
typedef struct
{
   char command;     // command

#define C_OK       0
#define C_ERROR    1
#define C_MD5ERROR 2
   char rc;          // return code

#define SHR_VARXX   1
#define SHR_CELSIUS 2
#define SHR_COUNTER 3
#define SHR_REGEN   4
   char memsw;       // memory switch
   
#define CFLAG_EXEC 1 // .... ...1
#define CFLAG_BUSY 3 // .... ..11
#define CFLAG_FIN  7 // .... .111  
   char flag;        // Flag
   
   int  adresse;     // adresse
   int  reg[8];      // work   
   int  pid;         // process id für start cmd mit kill usr2
                  
   unsigned int  salt;        // salt
   unsigned char md5[16];
   unsigned char res[16];
} S_RDWR;
                     // FIFO Struktur Texte
typedef struct
{
   char *adrbuf[32]; // 32 Adressen
   int count;        // Anzahl der texte im Puffer
   int readcount;    // Anzahl der texte im Puffer
   int read;         // Lese position
   int write;        // Schreib position
} S_FIFO_TEXT;


typedef struct                           // Basis werte
{
   unsigned int       notation;          //
   int                version;           //
   int                sonnen_auf;        // Sonnenaufgangszeit
   int                sonnen_unt;        // Sonnenuntergang
   double             uart_ok;           // Uart Nachrichten ok
   double             uart_error;        // uart errors
#define A_TEG    0x0001        // .... ...1 Tuer Terasse auf
#define A_TWA    0x0002        // .... ..1. Tuer Waschkueche auf
#define A_TKE    0x0004        // .... .1.. Keller Tuer zu
#define A_BWM    0x0008        // .... 1... Bewegungsmelder
#define A_FEG    0x0010        // ...1 .... Fenster EG auf
#define A_REG    0x0020        // ..1. .... RegenM. tot
#define A_BTOT   0x0040        // .1.. .... BASIS TOT
   int                alarm;             // Alarm
   int                temperatur_C;      // Aussen Temperatur
   int                temperatur_G;      // Gewächshaus Temperatur
   int                temperatur_V;      // Vorlauf Temperatur
   int                temperatur_B;      // Rücklauf Temperatur
   int                temperatur_W;      // Warmwasser Temperatur
   int                temperatur_switch; // Temperatur Switch Tageswerte
   int                regen_stunde;      // Regen
   int                regen_heute;       // Regen
   int                regen_gestern;     // Regen
   int                regen_vorgestern;  // Regen
   int                regen_adresse;     // merker regen Adresse
   int                clear_day;         // merker
   int                stime;             // start erfassung rxdgmess
   int                last_time;         // last timestamp
   int                r1;                // reserve
   int                r2;                // reserve
   int                r3;                // reserve
   int                r4;                // reserve
   int                r5;                // reserve
   int                r6;                // reserve
   int                r7;                // reserve
   int                r8;                // reserve
   int                r9;                // reserve
   int                r10;               // reserve
   int                r11;               // reserve 
   int                r12;               // reserve 
   int                r13;               // reserve   
   int                r14;               // reserve   
   int                r15;               // reserve   
   int                r16;               // reserve 
} S_BASIS;

                     // FIFO Struktur
typedef struct
{
   char *buffer;     // buffer Adresse
   int count;        // Anzahl der Zeichen im Puffer
   int read;         // Lese position
   int write;        // Schreib position
} S_FIFO;

/*
** Parameter area
*/
struct md5contextarea
{
   unsigned long buf[4];
   unsigned long bits[2];
   unsigned char in[64];
};
typedef struct md5contextarea  MD5Context ;

#endif