Better processing BM-Lite transfer interrupts

This commit is contained in:
Andrey Perminov 2021-06-30 12:29:43 -07:00
parent b8a0ad09b7
commit b2f48def26
5 changed files with 14 additions and 8 deletions

View File

@ -45,6 +45,8 @@ static HCP_comm_t hcp_chain = {
.phy_rx_timeout = 2000, .phy_rx_timeout = 2000,
}; };
#ifdef BMLITE_USE_CALLBACK
void bmlite_on_error(bmlite_error_t error, int32_t value) void bmlite_on_error(bmlite_error_t error, int32_t value)
{ {
if(value != FPC_BEP_RESULT_TIMEOUT) { if(value != FPC_BEP_RESULT_TIMEOUT) {
@ -84,7 +86,7 @@ void bmlite_on_identify_start()
} }
// void bmlite_on_identify_finish(); // void bmlite_on_identify_finish();
#endif
int main (int argc, char **argv) int main (int argc, char **argv)
{ {
@ -117,8 +119,9 @@ int main (int argc, char **argv)
current_id = 0; current_id = 0;
} }
res = bep_identify_finger(&hcp_chain, 0, &template_id, &match); 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(); platform_bmlite_reset();
continue;
} else if (res != FPC_BEP_RESULT_OK) { } else if (res != FPC_BEP_RESULT_OK) {
continue; continue;
} }

View File

@ -152,6 +152,10 @@ fpc_bep_result_t bep_capture(HCP_comm_t *chain, uint16_t timeout)
chain->phy_rx_timeout = timeout; chain->phy_rx_timeout = timeout;
for(int i=0; i< MAX_SINGLE_CAPTURE_ATTEMPTS; i++) { 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)); 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)) if( !(bep_result || chain->bep_result))
break; break;
} }

View File

@ -48,7 +48,7 @@ typedef struct {
* Pin definitions for RPI 3 * Pin definitions for RPI 3
*/ */
#define BMLITE_RESET_PIN 0 #define BMLITE_RESET_PIN 0
#define BMLITE_IRQ_PIN 22 #define BMLITE_READY_PIN 22
#define SPI_CHANNEL 0 #define SPI_CHANNEL 0
/** /**

View File

@ -53,7 +53,7 @@ static const uint8_t spiBPW = 8;
uint32_t speed_hz_int; uint32_t speed_hz_int;
void fpc_sensor_spi_reset(bool state); void fpc_bmlite_reset(bool state);
static void raspberryPi_init() static void raspberryPi_init()
{ {
@ -61,7 +61,7 @@ static void raspberryPi_init()
wiringPiSetup(); wiringPiSetup();
/* Set correct pin modes */ /* Set correct pin modes */
pinMode(BMLITE_IRQ_PIN, INPUT); pinMode(BMLITE_READY_PIN, INPUT);
pinMode(BMLITE_RESET_PIN, OUTPUT); pinMode(BMLITE_RESET_PIN, OUTPUT);
/* Set reset high */ /* Set reset high */
@ -81,7 +81,7 @@ void hal_bmlite_reset(bool state)
bool hal_bmlite_get_status(void) bool hal_bmlite_get_status(void)
{ {
return digitalRead(BMLITE_IRQ_PIN); return digitalRead(BMLITE_READY_PIN);
} }

View File

@ -20,7 +20,7 @@
CPU = cortex_m4 CPU = cortex_m4
LOG := FPU ?= hard
CC := arm-none-eabi-gcc CC := arm-none-eabi-gcc
CFLAGS +=\ CFLAGS +=\
@ -116,7 +116,6 @@ HAL_SRCS += \
$(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \ $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \
$(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \ $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \
$(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_printf.c \ $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_printf.c \
# $(PROJ_DIR)/main.c \
VPATH += $(dir $(HAL_SRCS)) VPATH += $(dir $(HAL_SRCS))
C_SRCS += $(notdir $(HAL_SRCS)) C_SRCS += $(notdir $(HAL_SRCS))