RadioSvegliaGBE
Buzzer.h
Go to the documentation of this file.
1 #pragma once
2 
20 #pragma region INCLUSIONS
21 // nothing
22 #pragma endregion INCLUSIONS
23 
24 // Namespace di protezione dalle inclusioni multiple con nominazione uguale
25 /*
26 I valori constexpr, come spiegato appena sopra, equivalgono alla direttiva '#define'. Questo pu� creare problemi nel momento in cui un singolo file viene incluso
27 in una gerarchia di molti pi� file, dove si potrebbe riscontrare la presenza di constexpr appartenenti a file diversi ma con gli stessi nomi! Questa ripetitivit� dei nomi deriva
28 dagli standard di nominazione. Per evitare, quindi, conflitti di multipla definizione, andremo ad utilizzare un 'namespace', che, come dice il nome, fornisce uno SPAZIO per i NOMI del nostro
29 file in cui il 'namespace' � stato dichiarato ed implementato.
30 Mantieniamo comunque la specificazione 'static', per evitare errori di linker in caso di inclusioni multiple di questa unit� di traslazione [file].
31 */
40 namespace Buzzer__file
41 {
42  // Espressione costante (equivalente della direttiva '#define') per la definizione di un valore di "non-pin".
43  // Questo valore rappresenta lo stato delle variabili contenenti valori relativi ai PIN prima dell'inizializzazione.
44  /*Lasciare variabili PIN senza inizializzazione potrebbe causare risultati indefiniti.*/
46  static constexpr auto _nopin = -1;
47 
50  static constexpr auto _DelayOffset = 500;
51 }
52 
61 class Buzzer
62 {
63  /*Blocco trivial*/
64  /*
65  Stiamo trattando una classe interamente statica. Per la definizione di staticità, descritta successivamente, questa classe fungerà solamente
66  da "contenitore astratto" per organizzare più logicamente i dati. In verità, tutto risiederà principalmente nel Data Segment, quindi sarà
67  globale, ma statico (anche questo descritto successivamente).
68  Questa staticità implica la NON necessità di creare istanze di questa classe, che risulterebbero totalmente inutili dato che tutti gli attributi
69  e i metodi esistono nell'ambito globale.
70  Per evitare, quindi, inutili istanziamenti, verranno bloccati il costruttore trivial (di default generato dal compilatore) e il distruttore, reso
71  inutile dalla non-istanziabilità della classe stessa.
72  */
73 private:
74  // Blocco attraverso privatizzazione del costruttore trivial
81  Buzzer() = default;
82  // Blocco attraverso privatizzazione del distruttore trivial
89  ~Buzzer() = default;
90 
91  /*Attributi*/
92 private:
94  static int m_BuzzerPin;
95 
97  static bool m_hasBeenCalled;
98 
99  /*Init*/
100 public:
120  static bool Init(const int& t_BuzzerPin);
121 
122  /*Metodi*/
141  static bool Bip(const unsigned int& t_Frequency, const unsigned int& t_Duration);
142 
143  /*Metodi di Automazione*/
164  static bool BipAutomated(const unsigned int& t_Frequency, const unsigned int& t_Duration);
165 };
166 
167 // Dichiarazione delle variabili GLOBALI STATICHE
168 // Risiederanno nel Data Segment
169 /*
170 Essendo statiche in classe, tutti gli attributi non sono altro che variabili GLOBALI STATICHE.
171 Per questo è richiesta la dichiarazione globale. Non è necessario specificare 'static' essendo già stato specificato nella dichiarazione degli
172 attributi nella classe stessa.
173 */
177 bool Buzzer::m_hasBeenCalled = false;
Buzzer__file
Spazio dei nomi riferito al file Buzzer.h.
Buzzer__file::_nopin
static constexpr auto _nopin
Definition: Buzzer.h:46
Buzzer::BipAutomated
static bool BipAutomated(const unsigned int &t_Frequency, const unsigned int &t_Duration)
AUTOMATIZZATO: Genera un'onda quadra della frequenza e durata specificati come parametri.
Definition: Buzzer.cpp:47
Buzzer::Buzzer
Buzzer()=default
Costruttore di default della classe Buzzer.
Buzzer::Bip
static bool Bip(const unsigned int &t_Frequency, const unsigned int &t_Duration)
Genera un'onda quadra della frequenza e durata specificati come parametri.
Definition: Buzzer.cpp:33
Buzzer::Init
static bool Init(const int &t_BuzzerPin)
Metodo di inizializzazione dei componenti della classe.
Definition: Buzzer.cpp:15
Buzzer::~Buzzer
~Buzzer()=default
Distruttore della classe Buzzer.
Buzzer::m_hasBeenCalled
static bool m_hasBeenCalled
Definition: Buzzer.h:97
Buzzer
Classe per la gestione del buzzer della radiosveglia.
Definition: Buzzer.h:61
Buzzer::m_BuzzerPin
static int m_BuzzerPin
Definition: Buzzer.h:94
Buzzer__file::_DelayOffset
static constexpr auto _DelayOffset
Definition: Buzzer.h:50