#ifndef __homedef
#define __homedef

//  indirizzi primari delle unita' - 00-7F: reserved
    #define HOME_MAIN               0x80
    #define HOME_MASTER             0x80
    #define HOME_ALLARME            0x80
    #define HOME_DISPLAY            0x81
    #define HOME_CANPOWER           0x82
    #define HOME_CAMERA             0x84
    #define HOME_SIMONE2            0x85
    #define HOME_TENDE              0x88
    #define HOME_CLOCK              0x89
    #define HOME_SOUND              0x8A

    #define HOME_SALA               0x8C
    #define HOME_ALBERO             0x8D
    #define HOME_LUCE1              0x8E
    #define HOME_LUCE_DIETRO        0x8F
    #define HOME_HTTP               0x90
    #define HOME_PISCINA            0x94
    #define HOME_INNAFFIATOI        0x98
    #define HOME_METEO              0x9C
    #define HOME_CALDAIA            0xA0
    #define HOME_TELECOMANDO        0xA4
    #define HOME_TUTTI              0xFF
    #define HOME_DEBUG              0xDB

    #define SIMO_HTTP               0x91
    #define SIMO_ALLARME            0xB0
    #define SIMO_ALLARME_1          0xB1
    #define SIMO_CMD01              0xB2
    #define SIMO_CMD02              0xB3
    #define SIMO_CMD03              0xB4
    #define SIMO_EIB                0xB8
    #define SIMO_INNAFFIA           0xB9
    #define SIMO_CALDAIA            0xBA

//  indirizzi secondari o di gruppo a cui vengono indirizzati i dati globali
    #define HOME_GRUPPO_RF           0x40
    #define HOME_GRUPPO_TELECOMANDO  0x60
    #define HOME_GRUPPO_ENEL         0x50
    #define HOME_GRUPPO_TEMPERATURE  0x48
    #define HOME_GRUPPO_SENSORI      0x44
    #define HOME_GRUPPO_ALLARME      0x42
    #define HOME_GRUPPO_ALTRO        0x41i

//  filter & mask per  indirizzi secondari o di gruppo
    #define FILTER_GRUPPI            0x40

    #define MASK_GRUPPO_RF           0xBF      // 1011 1111
    #define MASK_GRUPPO_TELECOMANDO  0xDF      // 1101 1111
    #define MASK_GRUPPO_ENEL         0xEF      // 1110 1111
    #define MASK_GRUPPO_TEMPERATURE  0xF7      // 1111 0111
    #define MASK_GRUPPO_SENSORI      0xFB      // 1111 1011
    #define MASK_GRUPPO_ALLARME      0xFD      // 1111 1101
    #define MASK_GRUPPO_ALTRO        0xFE      // 1111 1110

//  PDUFormats : comandi esecutivi   -  e8-ff: partially reserved
#define CMD_HOME_ROLLCALL        0x06       //  richiesta di "appello"
#define CMD_FIRMWARE             0x07       //  aggiornamento firmware
#define CMD_RS232                0x08       //  rs232 su can
#define CMD_ALLARME              0x0A
//                                    0x01: //  spegni allarme
//                                    0x02: //  accendi
//                                    0x06: //  accendi - escludi zona notte
//                                    0x0a: //  accendi - esclude zona giorno
//                                    0x0e: //  accendi - esclude zona giorno e zona notte
//                                    0x20: //  toggle    on-off
//                                    0x40: //  toggle    notte
#define CMD_ALLARME_SERVIZIO     0x0B
#define CMD_CLOCK_ALARM_SET      0x0C
#define CMD_TENDE                0x10
#define CMD_ORARIO               0x19    // richiesta orario (msg 0x99)
#define CMD_LUCI_FIORIERA        0x20
#define CMD_LUCE1                0x21
#define CMD_ALBERO               0x23
#define CMD_HTTP                 0x30
#define CMD_PISCINA              0x38
#define CMD_INNAFFIATOI          0x40    // cc      - comando x innaffiatoi
#define CMD_METEO                0x50
#define CMD_TERMO                0x60
#define CMD_SIMONTERMO           0x61 //[0] [1] [2] [3] [4] [5]
//                                      [0];              // byte 0 - temperatura richiesta zona 1
//                                          [1];          // byte 1 - temperatura richiesta zona 2
//                                              [2];      // byte 2 - temperatura richiesta zona 3
//                                                  [3];  // byte 3 - temperatura richiesta zona 4
//                                                      [4]; // byte 4 - comando diretto (se 0xCn)
//                                                     0x90      // accendi bassa T
//                                                     0x91      // accendi alta  T
//                                                     0x50      // spegni bassa T
//                                                     0x51      // spegni  alta T
//                                                          [5];     // byte 5 - half isteresy se > 0
#define CMD_TELECOMANDO          0x70 // hh cc   - header (1-2-3) comando
#define CMD_EIB                  0x77 // [0]  [] [] comando EIB
//                                       0x01  device [1] (logico) comando [2]
//                                                                        0x00-0x01  spegni-accendi
//                                                                        0x20-0x21-0x22  stop-up-down
//                                       0x02  device [1][2] (fisico) [3][][] comando
//                                       0x03  tapparella [1] vai a posizione [2] (logici)
//                                       0x04  gruppo [1][2] (fisico) [3][][] comando
//                                       0x10  attiva scenario [1]
//                                       0xF0  luci automatiche dalle [1] alle [2] per [3] minuti
//
//            : dati globali
#define GLOBAL_ALLARME           0x80    // situazione centrale allarme
#define GLOBAL_ALLARME_TEST      0x81    // situazione centrale allarme
#define GLOBAL_ALLARME_SIMONE    0x82 // [0] [1] [2] [3] [4] [5] [6] [7] // situazione centrale allarme
//                                    [0] = StatoAllarme
//                                                Acceso:1;          // bit 0
//                                                Rilevato:1;        // bit 1 rilevato dalla centrale
//                                                EsclusoNotte:1;    // bit 2
//                                                EsclusoGiorno:1;   // bit 3
//                                                Preallarme:1;      // bit 4
//                                                filler:1;          // bit 5
//                                                filler1:1;         // bit 6
//                                                Led:1;             // bit 7   - da StatoOut.Led
//                                       [1] = dati rilevatori maskerati - input LOGICO
//                                       [2] = dati rilevatori maskerati - input LOGICO
//                                       [3] = dati rilevatori maskerati - input LOGICO
//                                       [4] = dati rilevatori maskerati - input LOGICO
//                                       [5] = dati rilevatori maskerati - input LOGICO
//                                       [6] = tensione alimentazione con 2 decimali -LB-
//                                       [7] = tensione alimentazione con 2 decimali -HB-
#define GLOBAL_DEVICE_ALL_SIMONE 0x83 // [0] [1] [2] [3] [4] [5] [6] [7] // devices centrale allarme
//                                       [0] [1] numero device  e indice descrizione (high-low)
//                                       [2] [3] numero device  e indice descrizione (high-low)
//                                       [4] [5] numero device  e indice descrizione (high-low)
//                                       [6] [7] numero device  e indice descrizione (high-low)

#define GLOBAL_TENDE             0x88    // posizione tende
#define GLOBAL_SALA              0x90    // stato luci sala
#define GLOBAL_ALBERO            0x91    // stato RF albero
#define GLOBAL_LUCE              0x92    // stato luce esterna
#define GLOBAL_HTTP              0x98
#define GLOBAL_ORARIO            0x99    // DATA e ORA
//                                    [0] = hh        [1] = mm
#define GLOBAL_PISCINA           0xA0    // stato RF piscina
#define GLOBAL_INNAFFIATOI       0xA8    // stato e tempi innaffiatoi
#define GLOBAL_TERMO             0xB0    // stato termostati e pompe
#define GLOBAL_TELECOMANDO       0xB8    // comandi ricevuti via rf
#define GLOBAL_EIB_LG            0xB9 // [0] [1]   // comandi ricevuti via eib
//                                       [0] = numero device (logico)
//                                           [1] = 0/1 onoff (luci)  o posizione (tapparelle)
#define GLOBAL_EIB_PH            0xBA // [0] [1] [2] [3] [4] [5] [6] [7]  // comandi ricevuti via eib
//
#define GLOBAL_EIB_POLL          0xBB    // stati ricevuti via eib - polling
#define GLOBAL_ENEL_POWER        0xC0    // Potenze istantanee
#define GLOBAL_ENEL_ENERGY       0xC1    // CTR produz consumo immiss prelievo e Wh
#define GLOBAL_CANPOWER          0xC2    // tensione e corrente linea CAN
#define GLOBAL_METEO_BALCONE     0xC8    // temp, humi, dewp, luce balcone
#define GLOBAL_SIMONTERMO        0xCA //[0] [1] [2] [3] [4] // dati caldaia simone
//                                      [0] [1] [2] [3] temperatura zone 1-2-3-4
//                                                      [4] stato caldaia
//                                                           Salotto:1;     // bit 0
//                                                           Camera:1;      // bit 1
//                                                           Cucina:1;      // bit 2
//                                                           Bagno:1;       // bit 3
//                                                           filler:2;      // bit 45
//                                                           main_BassaTemp;// bit 6
//                                                           main_AltaTemp; // bit 7
#define GLOBAL_SIMONEVENT        0xCB //[0]  [1]  [2]        // eventi simone
//                                      [0] = 0x01 evento allarme rilevato
//                                           [1] = NamePointerB[LogRecord.portNumber].half.MS;
//                                           [1] = NamePointerB[LogRecord.portNumber].half.LS;
//                                                [2] = LogRecord.Allarme )portType & portNumber
//                                      [0] = 0x02                     onoff  allarme
//                                           [1] = 0xE1 on   0xE2 on notte   0xE3 on sera   0xE4 on giorno
//                                      [0] = 0x03                     onoff  cancelli
//                                           [1] = b0=campanello  b1=cancellone  b2=cancellino
#define GLOBAL_METEO_SOTTO       0xD0    // temp, humi, dewp, pressione sotto
#define GLOBAL_METEO_SOPRA       0xD1    // temp sopra e fuori
#define GLOBAL_METEO_NOTTE       0xD2    // temp NOTTE
#define GLOBAL_METEO_TERMO       0xD3    // temp ACQUA
#define GLOBAL_VARI              0xD8    // stato telefono, campanello, ecc...
#define GLOBAL_GATE_ERROR        0xE1    // errore traduzione lin->can
#define GLOBAL_DEBUG             0xDB    // debug
#define GLOBAL_HOME_ROLLCALL     0xDC    // risultato chiamata di appello (rollcall)

    #define HOME_NAME_PFX       "homeN"
    #define J1939_EEMEM_CANPARAM 2
    #define LUCE_CREPUSCOLO      11
#endif
