|
8 | 8 |
|
9 | 9 | #ifdef ARDUINO_OPTA |
10 | 10 | #include "OptaFactoryTest.h" |
11 | | - |
| 11 | +#include "utility/ResetInput.h" |
12 | 12 |
|
13 | 13 | #define VID_FINDER 0x35D1 |
14 | 14 | #define VID_ARDUINO 0x2341 |
@@ -62,6 +62,11 @@ void OptaFactoryTestClass::begin() { |
62 | 62 | do{ |
63 | 63 | _info = boardInfo(); |
64 | 64 | } while (_info == nullptr); |
| 65 | + if(_info->_board_functionalities.rs485 == 1){ |
| 66 | + ResetInput::getInstance().setPinChangedCallback(buttonCallbackRS485); |
| 67 | + } else { |
| 68 | + ResetInput::getInstance().setPinChangedCallback(endCallback); |
| 69 | + } |
65 | 70 |
|
66 | 71 | } |
67 | 72 | void OptaFactoryTestClass::optaIDTest() { |
@@ -183,6 +188,10 @@ bool OptaFactoryTestClass::poll() { |
183 | 188 |
|
184 | 189 | } |
185 | 190 |
|
| 191 | + if (_showRS485Result){ |
| 192 | + showRS485SuccessResult(); |
| 193 | + } |
| 194 | + |
186 | 195 | if (_nextBoardInfoPrint < millis()) |
187 | 196 | { |
188 | 197 | _nextBoardInfoPrint = millis() + 3000; |
@@ -300,14 +309,10 @@ void OptaFactoryTestClass::inputManage(void) |
300 | 309 | digitalWrite(LEDG, LOW); |
301 | 310 | digitalWrite(LEDB, LOW); |
302 | 311 | _all_on = false; |
303 | | - if(_info->_board_functionalities.rs485 == 0) { |
304 | | - _test_running = false; |
305 | | - } |
306 | 312 | } |
307 | 313 | } |
308 | 314 |
|
309 | 315 | void OptaFactoryTestClass::rs485Manage() { |
310 | | - bool rs485_ok = false; |
311 | 316 | uint32_t t_rs485_pulse = 0; |
312 | 317 | digitalWrite(MY_RS485_RE_PIN, HIGH); |
313 | 318 | digitalWrite(MY_RS485_DE_PIN, HIGH); |
@@ -355,21 +360,12 @@ void OptaFactoryTestClass::rs485Manage() { |
355 | 360 | if((_rs485_pulse == N_PULSE) || (_rs485_pulse == N_PULSE + 1)) |
356 | 361 | { |
357 | 362 | Serial.println("RS485 check OK"); |
358 | | - rs485_ok = true; |
| 363 | + _rs485_test_done = true; |
| 364 | + _rs485_ok = true; |
359 | 365 | } |
360 | 366 | } |
361 | 367 | } |
362 | 368 |
|
363 | | - if(rs485_ok == true) |
364 | | - { |
365 | | - digitalWrite(RL1, HIGH); |
366 | | - digitalWrite(LED1_SYS, HIGH); |
367 | | - delay(1000); |
368 | | - digitalWrite(RL1, LOW); |
369 | | - digitalWrite(LED1_SYS, LOW); |
370 | | - _rs485_test_done = true; |
371 | | - _test_running = false; |
372 | | - } |
373 | 369 | } |
374 | 370 |
|
375 | 371 |
|
@@ -488,6 +484,37 @@ void OptaFactoryTestClass::printModel(void) |
488 | 484 | Serial.println(" <<<\n"); |
489 | 485 | } |
490 | 486 |
|
| 487 | +void OptaFactoryTestClass::endCallback() { |
| 488 | + if(digitalRead(BTN_USER) == HIGH) |
| 489 | + { |
| 490 | + _test_running = false; |
| 491 | + } |
| 492 | +} |
| 493 | + |
| 494 | +void OptaFactoryTestClass::buttonCallbackRS485() |
| 495 | +{ |
| 496 | + |
| 497 | + if(digitalRead(BTN_USER) == LOW && _rs485_ok == true) |
| 498 | + { |
| 499 | + _showRS485Result = true; |
| 500 | + } |
| 501 | +} |
| 502 | + |
| 503 | +void OptaFactoryTestClass::showRS485SuccessResult() { |
| 504 | + digitalWrite(RL1, HIGH); |
| 505 | + digitalWrite(LED1_SYS, HIGH); |
| 506 | + digitalWrite(RL4, HIGH); |
| 507 | + digitalWrite(LED4_SYS, HIGH); |
| 508 | + delay(1000); |
| 509 | + digitalWrite(RL1, LOW); |
| 510 | + digitalWrite(LED1_SYS, LOW); |
| 511 | + digitalWrite(RL4, LOW); |
| 512 | + digitalWrite(LED4_SYS, LOW); |
| 513 | + _test_running = false; |
| 514 | + _showRS485Result = false; |
| 515 | + |
| 516 | +} |
| 517 | + |
491 | 518 | void OptaFactoryTestClass::rs485Rcv() { |
492 | 519 | _rs485_pulse++; |
493 | 520 | } |
|
0 commit comments