Pulsante rosso del BoxSetter

 

Quando premo il pulsante rosso in long press del boxSetter csa accade?

 

Ecco un riassunto chiaro del flusso completo che gestisce i tuoi allarmi tramite BoxSetter, BoxInterface, EEPROM e RTC:


1️⃣ BoxSetter

  • Ha i pulsanti fisici (rosso, giallo, blu, verde).

  • Nel metodo tick():

    • Rileva long press sul pulsante rosso:

      if (btnRosso.longPress()) saveFlag = true;
    • Non scrive direttamente in EEPROM né nell’RTC, ma attiva un flag interno saveFlag.

       

  • Metodo di accesso pubblico:

     

    bool BoxSetter::isSaveRequested() { bool tmp = saveFlag; saveFlag = false; return tmp; }

    Questo permette ad altri oggetti (BoxInterface) di sapere che l’utente ha richiesto di salvare.


2️⃣ BoxInterface

  • Contiene un riferimento a RTCManager (rtcMgr) e gestisce la comunicazione tra BoxSetter e la memoria/RTC.

  • Nel tick() di BoxInterface:

     

    if (box.isSaveRequested()) { int ah, am, ch, cm, vw; box.getParametri(ah, am, ch, cm, vw); // legge valori da BoxSetter saveParametri(ah, am, ch, cm, vw); // scrive in EEPROM rtcMgr->setAllarmiGiornalieri(ah, am, ch, cm); // aggiorna subito l’RTC }
  • In pratica:

    • Legge i nuovi valori dal BoxSetter.

    • Salva i valori nella EEPROM.

    • Scrive subito i valori nei registri dell’RTC,

      così non serve resettare.


3️⃣ EEPROM

  • Contiene i parametri persistenti:

    • Apertura

    • Chiusura

    • Soglia vento

  • Permette di ripristinare i valori anche dopo un reset o spegnimento.


4️⃣ RTCManager

  • Gestisce il DS3231.

  • Ha metodi come:

    void setAllarmiGiornalieri(int ah, int am, int ch, int cm); uint8_t leggiRegistroDS3231(uint8_t addr);
  • Quando BoxInterface chiama rtcMgr->setAllarmiGiornalieri(...),

    i registri dell’RTC vengono aggiornati subito con i nuovi orari.


5️⃣ Flusso completo quando premi il pulsante rosso

  1. BoxSetter rileva long press → saveFlag = true.

  2. BoxInterface vede che box.isSaveRequested() è vero.

  3. BoxInterface:

    • Legge i parametri dal BoxSetter (getParametri).

    • Li scrive nella EEPROM (saveParametri).

    • Aggiorna i registri dell’RTC (rtcMgr->setAllarmiGiornalieri).

  4. Tutto aggiornato, non serve resettare.


💡 Vantaggio di questa architettura

  • Separazione netta tra interfaccia utente (BoxSetter) e logica/salvataggio (BoxInterface + RTCManager).

  • Tutto persistente e immediatamente operativo.