RadioSvegliaGBE
LocalSensor.cpp
Go to the documentation of this file.
1 
11 // Inclusione <automatica> dell'header che si sta implementando
12 #include "LocalSensor.h"
13 
14 // Implementazione del metodo 'Init' della categoria 'Init'
15 bool LocalSensor::Init(const int& t_SensorPin, const int& t_SensorType)
16 {
17  // Se esiste, dealloco istanza corrente
18  if (m_Sensor)
19  {
20  // Deallocazione
21  delete m_Sensor;
22 
23  //Sanificazione manuale
24  m_Sensor = nullptr;
25  }
26 
27  // Salvataggio dei valori passati come parametri negli attributi della classe
28  m_SensorPin = t_SensorPin;
29  m_SensorType = t_SensorType;
30 
31 
32  // Costruzione dell'oggetto di classe "DHT" con i valori degli attributi 'm_SensorPin', 'm_SensorType'
33  // Allocazione dinamica [heap]
34  m_Sensor = new DHT(m_SensorPin, m_SensorType);
35 
36  // Dopo l'allocazione, controllo che effettivamente è andata a buon fine. Un puntatore nullo (i.e. 'nullptr') sarebbe indice di errori durante l'allocazione.
37  if (m_Sensor)
38  return true;
39 
40  return false;
41 }
42 
43 // Implementazione del metodo 'Begin' della categoria 'Service Management'
44 // Prima, controllo che l'oggetto di classe "m_Sensor" sia stato già allocato.
45 // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
47 {
48  if (m_Sensor)
49  {
50  // Avvio il sensore con l'utilizzo del metodo 'begin' della classe "DHT"
51  m_Sensor->begin();
52 
53  return true;
54  }
55  else
56  return false;
57 }
58 
59 // Implementazione del metodo 'get_SensorPin' della categoria 'LowLevel getters'
61 {
62  // Ritorno l'indirizzo di memoria dell'attributo 'm_SensorPin'
63  // Calcolo dell'indirizzo attraverso utilizzo dell'operatore '&'
64  return &m_SensorPin;
65 }
66 
67 // Implementazione del metodo 'get_SensorType' della categoria 'LowLevel getters'
69 {
70  // Ritorno l'indirizzo di memoria dell'attributo 'm_SensorType'
71  // Calcolo dell'indirizzo attraverso utilizzo dell'operatore '&'
72  return &m_SensorType;
73 }
74 
75 // Implementazione del metodo 'get_Sensor' della categoria 'LowLevel getters'
77 {
78  // Ritorno l'attributo 'm_Sensor' perch� rappresenta gi� un puntatore
79  return m_Sensor;
80 }
81 
82 // Implementazione del metodo 'ReInit' della categoria 'LowLevel reallocator'
84 {
85  // Se esiste, dealloco istanza corrente
86  if (m_Sensor)
87  {
88  // Deallocazione
89  delete m_Sensor;
90 
91  //Sanificazione manuale
92  m_Sensor = nullptr;
93  }
94 
95  // Costruzione dell'oggetto di classe "DHT" con i valori degli attributi 'm_SensorPin', 'm_SensorType'
96  // Allocazione dinamica [heap]
97  m_Sensor = new DHT(m_SensorPin, m_SensorType);
98 
99  // Dopo l'allocazione, controllo che effettivamente è andata a buon fine. Un puntatore nullo (i.e. 'nullptr') sarebbe indice di errori durante l'allocazione.
100  if (m_Sensor)
101  return true;
102 
103  return false;
104 }
105 
106 // Implementazione del metodo 'get_Temperature' della categoria 'Metodi'
107 const float LocalSensor::get_Temperature(const TemperatureUnit& t_Switch)
108 {
109  // Ritorno il valore che ottengo attraverso la chiamata della funzione 'readTemperature'
110  // della libreria "DHT"
111  // Il parametro 't_Switch' differenzia unità di misura tra CELSIUS e FAHRENHEIT
112  /*Ausilio dell'operatore '->' per dereferenziamento "nascosto"*/
113 
114  // Prima di richiamare il corrispettivo metodo della classe "DHT", controllo che l'oggetto di classe "DHT"
115  // sia stato già allocato. Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con
116  // conseguente fail della memoria.
117  if (m_Sensor)
118  return m_Sensor->readTemperature((bool)t_Switch);
119  else
120  return m_Invalidator;
121 }
122 
123 // Implementazione del metodo 'get_Humidity' della categoria 'Metodi'
125 {
126  // Ritorno il valore che ottengo attraverso la chiamata della funzione 'readHumidity'
127  // della libreria "DHT"
128  /*Ausilio dell'operatore '->' per dereferenziamento "nascosto"*/
129 
130  // Prima di richiamare il corrispettivo metodo della classe "DHT", controllo che l'oggetto di classe "DHT"
131  // sia stato già allocato. Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con
132  // conseguente fail della memoria.
133  if (m_Sensor)
134  return m_Sensor->readHumidity();
135  else
136  return m_Invalidator;
137 }
138 
139 // Implementazione del metodo 'get_Invalidator' della categoria 'getter -> Invalidator'
140 /*La specificazione 'inline' rappresenta una grossa ottimizzazione!!*/
141 inline const float& LocalSensor::get_Invalidator()
142 {
143  // Ritorno il valore dell'attributo 'm_Invalidator'. Per evitare la copia durante la fase di ritorno, ritorno l'attributo
144  // originale [referenza --> reference '&']. L'attributo è già costante, questo evita modifiche non autorizzate.
145  return m_Invalidator;
146 }
147 
LocalSensor::Begin
static bool Begin()
Metodo di avvio del sensore.
Definition: LocalSensor.cpp:46
LocalSensor::m_SensorPin
static int m_SensorPin
Definition: LocalSensor.h:152
LocalSensor::get_Humidity
static const float get_Humidity()
Permette di ottenere il valore dell'umidità rilevata.
Definition: LocalSensor.cpp:124
LocalSensor::m_SensorType
static int m_SensorType
Definition: LocalSensor.h:164
LocalSensor::Init
static bool Init(const int &t_SensorPin, const int &t_SensorType)
Metodo di inizializzazione dei componenti della classe.
Definition: LocalSensor.cpp:15
LocalSensor::get_Invalidator
static const float & get_Invalidator()
Permette di ottenere l'invalidatore della classe.
Definition: LocalSensor.cpp:141
LocalSensor::get_SensorPin
static int *const get_SensorPin()
LowLevel getter per l'attributo m_SensorPin.
Definition: LocalSensor.cpp:60
LocalSensor::get_Temperature
static const float get_Temperature(const TemperatureUnit &t_Switch)
Permette di ottenere il valore della temperatura rilevata.
Definition: LocalSensor.cpp:107
LocalSensor::TemperatureUnit
TemperatureUnit
Enumerazione per la gestione dell'unità per la misurazione della temperatura.
Definition: LocalSensor.h:124
LocalSensor::ReInit
static bool ReInit()
LowLevel reallocator della classe LocalSensor.
Definition: LocalSensor.cpp:83
LocalSensor::m_Invalidator
static const float m_Invalidator
Definition: LocalSensor.h:387
LocalSensor::m_Sensor
static DHT * m_Sensor
Definition: LocalSensor.h:143
LocalSensor::get_SensorType
static int *const get_SensorType()
LowLevel getter per l'attributo m_SensorType.
Definition: LocalSensor.cpp:68
LocalSensor.h
LocalSensor::get_Sensor
static DHT *const get_Sensor()
LowLevel getter per l'attributo m_Sensor.
Definition: LocalSensor.cpp:76