Moved FPC BM-Lite SDK to a separate folder

Moved FPC BM-Lite SDK to a reparate folder
Checking result of execution of every command on BM-Lite

Change-Id: I10ef898673dd2250b8e287ace86e7d7574ab40fc
This commit is contained in:
Andrey Perminov 2020-05-07 16:06:05 -07:00
parent 630568b4d1
commit 02bf23c840
17 changed files with 55 additions and 21 deletions

View File

@ -20,6 +20,7 @@
"/usr/arm-none-eabi/include/c++/7.3.1/arm-none-eabi",
"/usr/arm-none-eabi/include/c++/7.3.1/backward",
"${workspaceFolder}/BMLite_example/inc",
"${workspaceFolder}/BMLite_sdk/inc",
"${workspaceFolder}/HAL_Driver/CMSIS/Include",
"${workspaceFolder}/HAL_Driver/inc",
"${workspaceFolder}/HAL_Driver/sdk",

View File

@ -27,6 +27,7 @@ OUT := out
DEPTH :=
HCP_PATH := ../hcp
MCUHAL_PATH := ../HAL_Driver
BMLITE_PATH := ../BMLite_sdk
# Main target
TARGET := $(OUT)/$(PRODUCT)
@ -72,6 +73,8 @@ PATH_INC += inc
C_INC = $(addprefix -I,$(PATH_INC))
# Include BM-Lite SDK
include $(BMLITE_PATH)/bmlite.mk
# Include HAL
include $(MCUHAL_PATH)/nordic.mk

View File

@ -89,8 +89,7 @@ void bmlite_on_identify_start()
int main (int argc, char **argv)
{
int baudrate = 4000000;
platform_init(baudrate);
platform_init(NULL);
{
char version[100];

13
BMLite_sdk/bmlite.mk Normal file
View File

@ -0,0 +1,13 @@
# Binary sources
BMLITE_SDK = $(DEPTH)../BMLite_sdk
VPATH += $(BMLITE_SDK)
C_INC += -I$(BMLITE_SDK)/inc
# Source Folders
VPATH += $(BMLITE_SDK)/src/
# C Sources
C_SRCS += $(notdir $(wildcard $(BMLITE_SDK)/src/*.c))

View File

@ -1,5 +1,5 @@
/**
* @file bmlite.h
* @file bmlite_hal.h
* @brief BM-Lite HAL functions.
*
* All functions must be implemented in order to support BM-Lite on a Board
@ -8,10 +8,18 @@
#ifndef BMLITE_H
#define BMLITE_H
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
#include "fpc_bep_types.h"
#ifdef __arm__
typedef uint32_t hal_tick_t;
#else
typedef uint64_t hal_tick_t;
#endif
/**
* @brief LED status.
*
@ -29,10 +37,10 @@ typedef enum {
/*
* @brief Board initialization
* @param[in] SPI CLK speed
* @param[in] params - pointer to additional parameters
*/
void hal_board_init(uint32_t speed_hz);
fpc_bep_result_t hal_board_init(void *params);
/*
* @brief Control BM-Lite Reset pin
@ -68,7 +76,7 @@ void hal_timebase_init(void);
*
* @return Tick count since hal_timebase_init() call. [ms]
*/
uint32_t hal_timebase_get_tick(void);
hal_tick_t hal_timebase_get_tick(void);
/**
* @brief Busy wait.

View File

@ -17,8 +17,9 @@
#ifndef FPC_BEP_TYPES_H
#define FPC_BEP_TYPES_H
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
/**
* @file fpc_bep_types.h
* @brief Biometric Embedded Platform types.

View File

@ -129,4 +129,4 @@ fpc_bep_result_t bmlite_copy_arg(HCP_comm_t *hcp_comm, uint16_t arg_key, void *a
#endif
#endif

View File

@ -31,9 +31,9 @@
/**
* @brief Initializes board
*
* @param[in] speed_hz Baudrate.
* @param[in] params - pointer to additional parameters.
*/
bool platform_init(uint32_t speed_hz);
fpc_bep_result_t platform_init(void *params);
/**
* @brief Does BM-Lite HW Reset

View File

@ -7,9 +7,10 @@
#include "bmlite_if_callbacks.h"
#define MAX_CAPTURE_ATTEMPTS 15
#define MAX_SINGLE_CAPTURE_ATTEMPTS 3
#define CAPTURE_TIMEOUT 3000
#define exit_if_err(c) { bep_result = c; if(bep_result) goto exit; }
#define exit_if_err(c) { bep_result = c; if(bep_result || chain->bep_result) goto exit; }
#define assert(c) { fpc_bep_result_t res = c; if(res) return res; }
@ -79,7 +80,11 @@ fpc_bep_result_t bep_capture(HCP_comm_t *chain, uint16_t timeout)
bmlite_on_start_capture();
chain->phy_rx_timeout = timeout;
bep_result = bmlite_send_cmd_arg(chain, CMD_CAPTURE, ARG_NONE, ARG_TIMEOUT, &timeout, sizeof(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 || chain->bep_result))
break;
}
chain->phy_rx_timeout = prev_timeout;
bmlite_on_finish_capture();

View File

@ -24,13 +24,15 @@
#include "platform.h"
#include "bmlite_hal.h"
bool platform_init(uint32_t speed_hz)
fpc_bep_result_t platform_init(void *params)
{
hal_board_init(4000000);
hal_timebase_init();
platform_bmlite_reset();
return true;
fpc_bep_result_t result;
result = hal_board_init(params);
if(result == FPC_BEP_RESULT_OK) {
hal_timebase_init();
platform_bmlite_reset();
}
return result;
}
void platform_bmlite_reset(void)

View File

@ -37,9 +37,10 @@ static void nordic_bmlite_gpio_init(void);
void nordic_bmlite_spi_init(uint32_t speed_hz);
void hal_board_init(uint32_t speed_hz)
fpc_bep_result_t hal_board_init(void *params)
{
(void)params;
if (NRF_UICR->REGOUT0 != UICR_REGOUT0_VOUT_3V3)
{
NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen << NVMC_CONFIG_WEN_Pos;
@ -52,9 +53,10 @@ void hal_board_init(uint32_t speed_hz)
NRF_USBD->ENABLE = 1;
nordic_bmlite_gpio_init();
nordic_bmlite_spi_init(speed_hz);
nordic_bmlite_spi_init(4000000);
bsp_board_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS);
return FPC_BEP_RESULT_OK;
}
void hal_bmlite_reset(bool state)