46
46
47
47
DGUSDisplay dgusdisplay;
48
48
49
+ #ifdef DEBUG_DGUSLCD_COMM
50
+ #define DEBUGLCDCOMM_ECHOPGM DEBUG_ECHOPGM
51
+ #else
52
+ #define DEBUGLCDCOMM_ECHOPGM (...) NOOP
53
+ #endif
54
+
49
55
// Preamble... 2 Bytes, usually 0x5A 0xA5, but configurable
50
56
constexpr uint8_t DGUS_HEADER1 = 0x5A ;
51
57
constexpr uint8_t DGUS_HEADER2 = 0xA5 ;
@@ -154,19 +160,19 @@ void DGUSDisplay::ProcessRx() {
154
160
155
161
case DGUS_IDLE: // Waiting for the first header byte
156
162
receivedbyte = LCD_SERIAL.read ();
157
- // DEBUG_ECHOPGM ("< ",x );
163
+ // DEBUGLCDCOMM_ECHOPGM ("< ", receivedbyte );
158
164
if (DGUS_HEADER1 == receivedbyte) rx_datagram_state = DGUS_HEADER1_SEEN;
159
165
break ;
160
166
161
167
case DGUS_HEADER1_SEEN: // Waiting for the second header byte
162
168
receivedbyte = LCD_SERIAL.read ();
163
- // DEBUG_ECHOPGM (" ",x );
169
+ // DEBUGLCDCOMM_ECHOPGM (" ", receivedbyte );
164
170
rx_datagram_state = (DGUS_HEADER2 == receivedbyte) ? DGUS_HEADER2_SEEN : DGUS_IDLE;
165
171
break ;
166
172
167
173
case DGUS_HEADER2_SEEN: // Waiting for the length byte
168
174
rx_datagram_len = LCD_SERIAL.read ();
169
- DEBUG_ECHOPGM (" (" , rx_datagram_len, " ) " );
175
+ // DEBUGLCDCOMM_ECHOPGM (" (", rx_datagram_len, ") ");
170
176
171
177
// Telegram min len is 3 (command and one word of payload)
172
178
rx_datagram_state = WITHIN (rx_datagram_len, 3 , DGUS_RX_BUFFER_SIZE) ? DGUS_WAIT_TELEGRAM : DGUS_IDLE;
@@ -178,20 +184,20 @@ void DGUSDisplay::ProcessRx() {
178
184
Initialized = true ; // We've talked to it, so we defined it as initialized.
179
185
uint8_t command = LCD_SERIAL.read ();
180
186
181
- DEBUG_ECHOPGM (" # " , command);
187
+ // DEBUGLCDCOMM_ECHOPGM ("# ", command);
182
188
183
189
uint8_t readlen = rx_datagram_len - 1 ; // command is part of len.
184
190
unsigned char tmp[rx_datagram_len - 1 ];
185
191
unsigned char *ptmp = tmp;
186
192
while (readlen--) {
187
193
receivedbyte = LCD_SERIAL.read ();
188
- DEBUG_ECHOPGM (" " , receivedbyte);
194
+ // DEBUGLCDCOMM_ECHOPGM (" ", receivedbyte);
189
195
*ptmp++ = receivedbyte;
190
196
}
191
- DEBUG_ECHOPGM (" # " );
197
+ // DEBUGLCDCOMM_ECHOPGM (" # ");
192
198
// mostly we'll get this: 5A A5 03 82 4F 4B -- ACK on 0x82, so discard it.
193
199
if (command == DGUS_CMD_WRITEVAR && ' O' == tmp[0 ] && ' K' == tmp[1 ]) {
194
- DEBUG_ECHOLNPGM (" >" );
200
+ // DEBUGLCDCOMM_ECHOPGM (">");
195
201
rx_datagram_state = DGUS_IDLE;
196
202
break ;
197
203
}
@@ -253,16 +259,16 @@ void DGUSDisplay::loop() {
253
259
254
260
rx_datagram_state_t DGUSDisplay::rx_datagram_state = DGUS_IDLE;
255
261
uint8_t DGUSDisplay::rx_datagram_len = 0 ;
256
- bool DGUSDisplay::Initialized = false ;
257
- bool DGUSDisplay::no_reentrance = false ;
262
+ bool DGUSDisplay::Initialized = false ,
263
+ DGUSDisplay::no_reentrance = false ;
258
264
259
265
// A SW memory barrier, to ensure GCC does not overoptimize loops
260
266
#define sw_barrier () asm volatile (" " : : :" memory" );
261
267
262
268
bool populate_VPVar (const uint16_t VP, DGUS_VP_Variable * const ramcopy) {
263
- // DEBUG_ECHOPGM("populate_VPVar ", VP);
269
+ // DEBUG_ECHOPGM("populate_VPVar ", VP);
264
270
const DGUS_VP_Variable *pvp = DGUSLCD_FindVPVar (VP);
265
- // DEBUG_ECHOLNPGM(" pvp ", (uint16_t )pvp);
271
+ // DEBUG_ECHOLNPGM(" pvp ", (uint16_t )pvp);
266
272
if (!pvp) return false ;
267
273
memcpy_P (ramcopy, pvp, sizeof (DGUS_VP_Variable));
268
274
return true ;
0 commit comments