diff --git a/Arduino_lib/BMLite/examples/bmlite_demo/bmlite_demo.ino b/Arduino_lib/BMLite/examples/bmlite_demo/bmlite_demo.ino index acaa081..ba6aa18 100644 --- a/Arduino_lib/BMLite/examples/bmlite_demo/bmlite_demo.ino +++ b/Arduino_lib/BMLite/examples/bmlite_demo/bmlite_demo.ino @@ -106,7 +106,7 @@ void loop() { current_id = 0; } res = bep_identify_finger(&hcp_chain, 0, &template_id, &match); - if (res == FPC_BEP_RESULT_TIMEOUT) { + if (res == FPC_BEP_RESULT_TIMEOUT || res == FPC_BEP_RESULT_IO_ERROR) { platform_bmlite_reset(); } else if (res != FPC_BEP_RESULT_OK) { return; diff --git a/Arduino_lib/BMLite/src/bmlite_if.cpp b/Arduino_lib/BMLite/src/bmlite_if.cpp index 438a70a..739ddb0 100644 --- a/Arduino_lib/BMLite/src/bmlite_if.cpp +++ b/Arduino_lib/BMLite/src/bmlite_if.cpp @@ -152,8 +152,12 @@ fpc_bep_result_t bep_capture(HCP_comm_t *chain, uint16_t timeout) chain->phy_rx_timeout = timeout; for(int i=0; i< MAX_SINGLE_CAPTURE_ATTEMPTS; i++) { bep_result = bmlite_send_cmd_arg(chain, CMD_CAPTURE, ARG_NONE, ARG_TIMEOUT, &timeout, sizeof(timeout)); + if(bep_result == FPC_BEP_RESULT_IO_ERROR || + bep_result == FPC_BEP_RESULT_TIMEOUT) { + break; + } if( !(bep_result || chain->bep_result)) - break; + break; } chain->phy_rx_timeout = prev_timeout; bmlite_on_finish_capture();