@@ -82,6 +82,7 @@ int screenMode = SELECT_MODE;
82
82
char koeo_codes[12 ][4 ];
83
83
int koeo_counter = 0 ;
84
84
int koeo_code = 0 ;
85
+ char koeo_max = -1 ;
85
86
86
87
void setup () {
87
88
Serial.begin (19200 );
@@ -190,7 +191,7 @@ void initSelectMode() {
190
191
}
191
192
192
193
void switchKoeoCode (bool down) {
193
- koeo_code = down ? (koeo_code+12 - 1 )% 12 : (koeo_code+1 )%12 ;
194
+ koeo_code = down ? (koeo_code+koeo_max)%(koeo_max+ 1 ) : (koeo_code+1 )%(koeo_max+ 1 ) ;
194
195
char code_buf[16 ];
195
196
sprintf (code_buf, " [%0d] %s" , koeo_code+1 , koeo_codes[koeo_code]);
196
197
drawMenuScreen (BACK_SIGN, UP_SIGN, DOWN_SIGN, " Fault Code" , code_buf, " " , " " );
@@ -220,13 +221,17 @@ void selectMode() {
220
221
eecIv.setModeKoeo ();
221
222
eecIv.restartReading ();
222
223
screenMode = RUNNING_KOEO;
224
+ koeo_max = -1 ;
223
225
drawWaitingScreen ();
224
226
break ;
225
227
}
226
228
}
227
229
228
230
void onKoeoReadCode (char message[]) {
229
231
sprintf (koeo_codes[koeo_counter], message);
232
+ if (koeo_max == -1 && !strcmp (message, " 000" )) {
233
+ koeo_max = koeo_counter - 1 ;
234
+ }
230
235
koeo_counter++;
231
236
}
232
237
@@ -236,10 +241,20 @@ void onStartMessageTimeout() {
236
241
}
237
242
238
243
void onKoeoFinished () {
244
+ // empty koeo
245
+ if (koeo_counter == 0 ) {
246
+ drawMenuScreen (BACK_SIGN, UP_SIGN, DOWN_SIGN, " No Errors" , " " , " " , " " );
247
+ screenMode = RESULT_FAULT_CODE;
248
+ koeo_counter = 0 ;
249
+ koeo_code = 0 ;
250
+ return ;
251
+ }
252
+
253
+ char code_buf[16 ];
239
254
koeo_counter = 0 ;
240
255
koeo_code = 0 ;
241
256
screenMode = RESULT_KOEO;
242
- char code_buf[ 16 ];
257
+
243
258
sprintf (code_buf, " [%0d] %s" , koeo_code+1 , koeo_codes[koeo_code]);
244
259
drawMenuScreen (BACK_SIGN, UP_SIGN, DOWN_SIGN, " Fault Code" , code_buf, " " , " " );
245
260
}
0 commit comments