RadioSvegliaGBE
SerialReader.cpp
Go to the documentation of this file.
1 
11  // Inclusione <automatica> dell'header che si sta implementando
12 #include "SerialReader.h"
13 
14 // Implementazione del metodo 'Init' della categoria 'Init'
15 bool SerialReader::Init(const unsigned int& t_BaudRate)
16 {
17  // Controllo che la classe non sia già stata inizializzata
18  if (!m_hasBeenCalled)
19  {
20  // Inizializzo la comunicazione seriale attraverso il metodo 'begin' di gestione delle porte seriali
21  Serial.begin(t_BaudRate);
22 
23  // Imposto il valore di 'm_BaudRate' al valore del parametro 't_BaudRate'
24  m_BaudRate = t_BaudRate;
25 
26  // Imposto il valore di 'm_buffer' al valore della constexpr '_initvalue'
28 
29  // Avviso che la chiamata al metodo 'Init' è già stata effettuata
30  m_hasBeenCalled = true;
31 
32  return true;
33  }
34  else
35  return false;
36 }
37 
38 // Implementazione del metodo 'read_n_format' della categoria 'Risorse Interne'
40 {
41  // Inizializzazione variabili di gestione dell'input
42  char l_input = NULL;
43  String l_input_linker = "";
44 
45  // Ripeti fintantochè l'input != NEW_LINE
46  while (l_input != 0x0A)
47  {
48  // Controllo che la porta seriale sia disponibile
49  if (Serial.available() > 0)
50  {
51  // Leggo valore
52  l_input = Serial.read();
53 
54  // Se l'input è qualsiasi carattere (eccetto NEW_LINE (ASCII --> 0x0A))
55  if (l_input != 0x0A)
56  {
57  // Concateno
58  l_input_linker += String(l_input);
59  }
60  }
61  }
62 
63  // Alla lettura di NEW_LINE, significa che l'input � terminato
64  // Esco dal metodo, ritornando la stringa contentente il mio intero input
65  return l_input_linker;
66 }
67 
68 // Implementazione del metodo 'read' della categoria 'Metodi'
70 {
71  // Controllo se la classe è già stata inizializzata
72  if (!m_hasBeenCalled)
74 
75  // Salvo nella variabile 'm_buffer' il valore appena letto attraverso la chiamata del metodo 'read_n_format' della classe "SerialReader"
77 
78  // Ritorno il valore del buffer 'm_buffer' appena aggiornato
79  // Ritorno il valore come copia per consentire all'utente qualsiasi modifica senza modificare l'attributo originale della classe
80  return m_buffer;
81 }
82 
83 // Implementazione del metodo 'get_buffer' della categoria 'Metodi'
84 inline String SerialReader::get_buffer()
85 {
86  // Ritorno il valore del buffer 'm_buffer' che per�, a differenza del metodo 'read', non � stato aggiornato.
87  // Contiene quindi il valore dell'ultima lettura effettuata.
88 
89  // Controllo se la classe è già stata inizializzata
90  if (!m_hasBeenCalled)
92 
93  return m_buffer;
94 }
95 
96 // Implementazione del metodo 'get_BaudRate' della categoria 'Metodi'
97 inline const unsigned int& SerialReader::get_BaudRate()
98 {
99  // Ritorno il valore di 'm_BaudRate'
100 
101  // Controllo se la classe è già stata inizializzata
102  if (!m_hasBeenCalled)
103  return m_Invalidator_asNumber;
104 
105  return m_BaudRate;
106 }
107 
108 // Implementazione del metodo 'get_Invalidator_asString' della categoria 'getter -> Invalidator'
109 /*La specificazione 'inline' rappresenta una grossa ottimizzazione!!*/
111 {
112  // Ritorno il valore dell'attributo 'm_Invalidator_asString'. Per evitare la copia durante la fase di ritorno, ritorno l'attributo
113  // originale [referenza --> reference '&']. L'attributo è già costante, questo evita modifiche non autorizzate.
114  return m_Invalidator_asString;
115 }
116 
117 // Implementazione del metodo 'get_Invalidator_asNumber' della categoria 'getter -> Invalidator'
118 /*La specificazione 'inline' rappresenta una grossa ottimizzazione!!*/
120 {
121  // Ritorno il valore dell'attributo 'm_Invalidator_asNumber'. Per evitare la copia durante la fase di ritorno, ritorno l'attributo
122  // originale [referenza --> reference '&']. L'attributo è già costante, questo evita modifiche non autorizzate.
123  return m_Invalidator_asNumber;
124 }
125 
127 //////////////////////////////////////////////////////////////////////////
SerialReader::m_Invalidator_asNumber
static const int m_Invalidator_asNumber
Definition: SerialReader.h:242
SerialReader::get_Invalidator_asString
static const String & get_Invalidator_asString()
Permette di ottenere l'invalidatore della classe --> String.
Definition: SerialReader.cpp:110
SerialReader::m_hasBeenCalled
static bool m_hasBeenCalled
Definition: SerialReader.h:111
SerialReader::m_BaudRate
static unsigned int m_BaudRate
Definition: SerialReader.h:107
SerialReader::get_BaudRate
static const unsigned int & get_BaudRate()
Permette di ottenere il valore del Baud Rate utilizzato corrente.
Definition: SerialReader.cpp:97
SerialReader::m_buffer
static String m_buffer
Definition: SerialReader.h:103
SerialReader::Init
static bool Init(const unsigned int &t_BaudRate)
Metodo di inizializzazione dei componenti della classe.
Definition: SerialReader.cpp:15
SerialReader::m_Invalidator_asString
static const String m_Invalidator_asString
Definition: SerialReader.h:236
SerialReader::read
static String read()
Metodo per effettuare la lettura di dati via comunicazione seriale [rx, tx].
Definition: SerialReader.cpp:69
SerialReader::get_buffer
static String get_buffer()
Permette di ottenere il valore del buffer corrente.
Definition: SerialReader.cpp:84
SerialReader.h
SerialReader::get_Invalidator_asNumber
static const int & get_Invalidator_asNumber()
Permette di ottenere l'invalidatore della classe --> int.
Definition: SerialReader.cpp:119
SerialReader__file::_initvalue
static const String _initvalue
Definition: SerialReader.h:43
SerialReader::read_n_format
static String read_n_format()
Risorsa interna per la formattazione corretta dei dati in lettura.
Definition: SerialReader.cpp:39