LibDriver AS608  1.0.0
AS608 full-featured driver
driver_as608.h
Go to the documentation of this file.
1 
37 #ifndef DRIVER_AS608_H
38 #define DRIVER_AS608_H
39 
40 #include <stdio.h>
41 #include <stdint.h>
42 #include <string.h>
43 
44 #ifdef __cplusplus
45 extern "C"{
46 #endif
47 
62 typedef enum
63 {
65  AS608_BOOL_TRUE = 0x01,
66 } as608_bool_t;
67 
71 typedef enum
72 {
73  AS608_LEVEL_1 = 0x0001,
74  AS608_LEVEL_2 = 0x0002,
75  AS608_LEVEL_3 = 0x0003,
76  AS608_LEVEL_4 = 0x0004,
77  AS608_LEVEL_5 = 0x0005,
79 
83 typedef enum
84 {
90 
94 typedef enum
95 {
99 
103 typedef enum
104 {
111 
115 typedef enum
116 {
120 
124 typedef enum
125 {
129 } as608_image_t;
130 
134 typedef enum
135 {
139 
143 typedef enum
144 {
148 
152 typedef enum
153 {
194 
198 typedef struct as608_params_s
199 {
200  uint16_t status;
202  uint16_t fingerprint_size;
204  uint32_t address;
206  uint16_t n_9600;
208 
212 typedef struct as608_handle_s
213 {
214  uint8_t (*uart_init)(void);
215  uint8_t (*uart_deinit)(void);
216  uint16_t (*uart_read)(uint8_t *buf, uint16_t len);
217  uint8_t (*uart_flush)(void);
218  uint8_t (*uart_write)(uint8_t *buf, uint16_t len);
219  void (*delay_ms)(uint32_t ms);
220  void (*debug_print)(const char *const fmt, ...);
221  uint8_t inited;
222  uint8_t buf[384];
223  uint8_t status;
224  uint16_t packet_size;
226 
230 typedef struct as608_info_s
231 {
232  char chip_name[32];
233  char manufacturer_name[32];
234  char interface[8];
240  uint32_t driver_version;
242 
260 #define DRIVER_AS608_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
261 
268 #define DRIVER_AS608_LINK_UART_INIT(HANDLE, FUC) (HANDLE)->uart_init = FUC
269 
276 #define DRIVER_AS608_LINK_UART_DEINIT(HANDLE, FUC) (HANDLE)->uart_deinit = FUC
277 
284 #define DRIVER_AS608_LINK_UART_READ(HANDLE, FUC) (HANDLE)->uart_read = FUC
285 
292 #define DRIVER_AS608_LINK_UART_WRITE(HANDLE, FUC) (HANDLE)->uart_write = FUC
293 
300 #define DRIVER_AS608_LINK_UART_FLUSH(HANDLE, FUC) (HANDLE)->uart_flush = FUC
301 
308 #define DRIVER_AS608_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
309 
316 #define DRIVER_AS608_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
317 
337 uint8_t as608_info(as608_info_t *info);
338 
351 uint8_t as608_init(as608_handle_t *handle, uint32_t addr);
352 
363 uint8_t as608_deinit(as608_handle_t *handle);
364 
375 uint8_t as608_get_last_status(as608_handle_t *handle, as608_status_t *status);
376 
387 uint8_t as608_print_status(as608_handle_t *handle, as608_status_t status);
388 
404 uint8_t as608_get_image(as608_handle_t *handle, uint32_t addr, as608_status_t *status);
405 
422 uint8_t as608_generate_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num, as608_status_t *status);
423 
440 uint8_t as608_match_feature(as608_handle_t *handle, uint32_t addr, uint16_t *score, as608_status_t *status);
441 
462 uint8_t as608_search_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num,
463  uint16_t start_page, uint16_t page_number, uint16_t *found_page,
464  uint16_t *score, as608_status_t *status);
465 
481 uint8_t as608_combine_feature(as608_handle_t *handle, uint32_t addr, as608_status_t *status);
482 
500 uint8_t as608_store_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num,
501  uint16_t page_number, as608_status_t *status);
502 
520 uint8_t as608_load_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num,
521  uint16_t page_number, as608_status_t *status);
522 
542 uint8_t as608_upload_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num,
543  uint8_t *output_buffer, uint16_t *output_len, as608_status_t *status);
544 
563 uint8_t as608_download_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num,
564  uint8_t *input_buffer, uint16_t input_len, as608_status_t *status);
565 
584 uint8_t as608_upload_image(as608_handle_t *handle, uint32_t addr, uint8_t *output_buffer,
585  uint16_t *output_len, as608_status_t *status);
586 
604 uint8_t as608_download_image(as608_handle_t *handle, uint32_t addr, uint8_t *input_buffer,
605  uint16_t input_len, as608_status_t *status);
606 
624 uint8_t as608_delete_feature(as608_handle_t *handle, uint32_t addr, uint16_t page_number, uint16_t number, as608_status_t *status);
625 
641 uint8_t as608_empty_all_feature(as608_handle_t *handle, uint32_t addr, as608_status_t *status);
642 
659 uint8_t as608_set_baud_rate(as608_handle_t *handle, uint32_t addr, uint8_t n_9600, as608_status_t *status);
660 
677 uint8_t as608_set_level(as608_handle_t *handle, uint32_t addr, as608_level_t level, as608_status_t *status);
678 
695 uint8_t as608_set_packet_size(as608_handle_t *handle, uint32_t addr, as608_packet_size_t size, as608_status_t *status);
696 
713 uint8_t as608_get_params(as608_handle_t *handle, uint32_t addr, as608_params_t *param, as608_status_t *status);
714 
731 uint8_t as608_enroll(as608_handle_t *handle, uint32_t addr, uint16_t *page_number, as608_status_t *status);
732 
750 uint8_t as608_identify(as608_handle_t *handle, uint32_t addr, uint16_t *page_number, uint16_t *score, as608_status_t *status);
751 
768 uint8_t as608_set_password(as608_handle_t *handle, uint32_t addr, uint32_t password, as608_status_t *status);
769 
786 uint8_t as608_verify_password(as608_handle_t *handle, uint32_t addr, uint32_t password, as608_status_t *status);
787 
804 uint8_t as608_get_random(as608_handle_t *handle, uint32_t addr, uint32_t *randn, as608_status_t *status);
805 
822 uint8_t as608_set_chip_address(as608_handle_t *handle, uint32_t addr, uint32_t new_addr, as608_status_t *status);
823 
842 uint8_t as608_get_flash_information(as608_handle_t *handle, uint32_t addr,
843  uint8_t *output_buffer, uint16_t *output_len, as608_status_t *status);
844 
861 uint8_t as608_set_port(as608_handle_t *handle, uint32_t addr, as608_bool_t enable, as608_status_t *status);
862 
881 uint8_t as608_write_notepad(as608_handle_t *handle, uint32_t addr, uint8_t page_number, uint8_t data[32], as608_status_t *status);
882 
901 uint8_t as608_read_notepad(as608_handle_t *handle, uint32_t addr, uint8_t page_number, uint8_t data[32], as608_status_t *status);
902 
921 uint8_t as608_burn_code(as608_handle_t *handle, uint32_t addr, as608_burn_code_mode_t mode,
922  uint8_t *input_buffer, uint16_t input_len, as608_status_t *status);
923 
944 uint8_t as608_high_speed_search(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t buffer_number,
945  uint16_t start_page, uint16_t page_number,
946  uint16_t *found_page, uint16_t *score,
947  as608_status_t *status);
948 
965 uint8_t as608_generate_bin_image(as608_handle_t *handle, uint32_t addr, as608_image_t image, as608_status_t *status);
966 
983 uint8_t as608_get_valid_template_number(as608_handle_t *handle, uint32_t addr, uint16_t *num, as608_status_t *status);
984 
1003 uint8_t as608_set_gpio_level(as608_handle_t *handle, uint32_t addr, as608_gpio_number_t gpio,
1004  as608_gpio_level_t input_level, as608_gpio_level_t *output_level, as608_status_t *status);
1005 
1024 uint8_t as608_get_index_table(as608_handle_t *handle, uint32_t addr, uint8_t num,
1025  uint8_t table[32], as608_status_t *status);
1026 
1057 uint8_t as608_command_write_read(as608_handle_t *handle, uint32_t addr, uint8_t type,
1058  uint8_t *input_buffer, uint16_t input_len,
1059  uint16_t ms, uint8_t *output_buffer, uint16_t *output_len);
1060 
1069 #ifdef __cplusplus
1070 }
1071 #endif
1072 
1073 #endif
uint8_t as608_download_image(as608_handle_t *handle, uint32_t addr, uint8_t *input_buffer, uint16_t input_len, as608_status_t *status)
download image
as608_sensor_type_t
as608 sensor type enumeration definition
Definition: driver_as608.h:104
uint8_t as608_set_port(as608_handle_t *handle, uint32_t addr, as608_bool_t enable, as608_status_t *status)
enable or disable port
uint8_t as608_set_packet_size(as608_handle_t *handle, uint32_t addr, as608_packet_size_t size, as608_status_t *status)
set packet size
uint8_t as608_get_random(as608_handle_t *handle, uint32_t addr, uint32_t *randn, as608_status_t *status)
get random
struct as608_handle_s as608_handle_t
as608 handle structure definition
uint8_t as608_init(as608_handle_t *handle, uint32_t addr)
initialize the chip
Definition: driver_as608.c:465
uint8_t as608_load_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num, uint16_t page_number, as608_status_t *status)
load feature
uint8_t as608_generate_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num, as608_status_t *status)
generate feature
Definition: driver_as608.c:702
uint8_t as608_get_index_table(as608_handle_t *handle, uint32_t addr, uint8_t num, uint8_t table[32], as608_status_t *status)
get index table
uint8_t as608_store_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num, uint16_t page_number, as608_status_t *status)
store feature
Definition: driver_as608.c:973
as608_status_t
as608 status enumeration definition
Definition: driver_as608.h:153
uint8_t as608_info(as608_info_t *info)
get chip's information
uint8_t as608_set_password(as608_handle_t *handle, uint32_t addr, uint32_t password, as608_status_t *status)
set password
uint8_t as608_upload_image(as608_handle_t *handle, uint32_t addr, uint8_t *output_buffer, uint16_t *output_len, as608_status_t *status)
upload image
uint8_t as608_write_notepad(as608_handle_t *handle, uint32_t addr, uint8_t page_number, uint8_t data[32], as608_status_t *status)
write notepad
as608_bool_t
as608 bool enumeration definition
Definition: driver_as608.h:63
uint8_t as608_get_valid_template_number(as608_handle_t *handle, uint32_t addr, uint16_t *num, as608_status_t *status)
get valid template number
struct as608_params_s as608_params_t
as608 params structure definition
uint8_t as608_search_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num, uint16_t start_page, uint16_t page_number, uint16_t *found_page, uint16_t *score, as608_status_t *status)
search feature
Definition: driver_as608.c:836
uint8_t as608_get_image(as608_handle_t *handle, uint32_t addr, as608_status_t *status)
get image
Definition: driver_as608.c:638
uint8_t as608_download_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num, uint8_t *input_buffer, uint16_t input_len, as608_status_t *status)
download feature
uint8_t as608_get_last_status(as608_handle_t *handle, as608_status_t *status)
get the last status
Definition: driver_as608.c:607
as608_gpio_level_t
as608 gpio level enumeration definition
Definition: driver_as608.h:144
uint8_t as608_combine_feature(as608_handle_t *handle, uint32_t addr, as608_status_t *status)
combine feature
Definition: driver_as608.c:908
uint8_t as608_print_status(as608_handle_t *handle, as608_status_t status)
print status
as608_buffer_number_t
as608 buffer number enumeration definition
Definition: driver_as608.h:95
as608_gpio_number_t
as608 gpio number enumeration definition
Definition: driver_as608.h:135
uint8_t as608_match_feature(as608_handle_t *handle, uint32_t addr, uint16_t *score, as608_status_t *status)
match feature
Definition: driver_as608.c:767
uint8_t as608_get_params(as608_handle_t *handle, uint32_t addr, as608_params_t *param, as608_status_t *status)
get params
uint8_t as608_set_level(as608_handle_t *handle, uint32_t addr, as608_level_t level, as608_status_t *status)
set level
uint8_t as608_delete_feature(as608_handle_t *handle, uint32_t addr, uint16_t page_number, uint16_t number, as608_status_t *status)
delete feature
uint8_t as608_set_baud_rate(as608_handle_t *handle, uint32_t addr, uint8_t n_9600, as608_status_t *status)
set baud rate
uint8_t as608_upload_feature(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t num, uint8_t *output_buffer, uint16_t *output_len, as608_status_t *status)
upload feature
uint8_t as608_deinit(as608_handle_t *handle)
close the chip
Definition: driver_as608.c:575
uint8_t as608_identify(as608_handle_t *handle, uint32_t addr, uint16_t *page_number, uint16_t *score, as608_status_t *status)
identify
struct as608_info_s as608_info_t
as608 information structure definition
as608_burn_code_mode_t
as608 burn code mode enumeration definition
Definition: driver_as608.h:116
uint8_t as608_set_chip_address(as608_handle_t *handle, uint32_t addr, uint32_t new_addr, as608_status_t *status)
set the chip address
uint8_t as608_burn_code(as608_handle_t *handle, uint32_t addr, as608_burn_code_mode_t mode, uint8_t *input_buffer, uint16_t input_len, as608_status_t *status)
burn code
uint8_t as608_read_notepad(as608_handle_t *handle, uint32_t addr, uint8_t page_number, uint8_t data[32], as608_status_t *status)
read notepad
as608_packet_size_t
as608 packet size enumeration definition
Definition: driver_as608.h:84
uint8_t as608_empty_all_feature(as608_handle_t *handle, uint32_t addr, as608_status_t *status)
empty all feature
as608_image_t
as608 image enumeration definition
Definition: driver_as608.h:125
as608_level_t
as608 level enumeration definition
Definition: driver_as608.h:72
uint8_t as608_set_gpio_level(as608_handle_t *handle, uint32_t addr, as608_gpio_number_t gpio, as608_gpio_level_t input_level, as608_gpio_level_t *output_level, as608_status_t *status)
set gpio level
uint8_t as608_generate_bin_image(as608_handle_t *handle, uint32_t addr, as608_image_t image, as608_status_t *status)
generate bin image
uint8_t as608_verify_password(as608_handle_t *handle, uint32_t addr, uint32_t password, as608_status_t *status)
verify password
uint8_t as608_enroll(as608_handle_t *handle, uint32_t addr, uint16_t *page_number, as608_status_t *status)
enroll
uint8_t as608_high_speed_search(as608_handle_t *handle, uint32_t addr, as608_buffer_number_t buffer_number, uint16_t start_page, uint16_t page_number, uint16_t *found_page, uint16_t *score, as608_status_t *status)
high speed search
uint8_t as608_get_flash_information(as608_handle_t *handle, uint32_t addr, uint8_t *output_buffer, uint16_t *output_len, as608_status_t *status)
get flash information
@ AS608_SENSOR_TYPE_FPC1011C
Definition: driver_as608.h:105
@ AS608_SENSOR_TYPE_C500
Definition: driver_as608.h:106
@ AS608_SENSOR_TYPE_S500
Definition: driver_as608.h:107
@ AS608_SENSOR_TYPE_XWSEMI
Definition: driver_as608.h:108
@ AS608_SENSOR_TYPE_CUSTOM
Definition: driver_as608.h:109
@ AS608_STATUS_FEATURE_COMBINE_ERROR
Definition: driver_as608.h:164
@ AS608_STATUS_OK
Definition: driver_as608.h:154
@ AS608_STATUS_UPDATE_ERROR
Definition: driver_as608.h:176
@ AS608_STATUS_DATA_INVALID
Definition: driver_as608.h:188
@ AS608_STATUS_BUFFER_INVALID
Definition: driver_as608.h:175
@ AS608_STATUS_NOT_FOUND
Definition: driver_as608.h:163
@ AS608_STATUS_F0_RESPONSE
Definition: driver_as608.h:179
@ AS608_STATUS_FRAME_ERROR
Definition: driver_as608.h:155
@ AS608_STATUS_NOT_MATCH
Definition: driver_as608.h:162
@ AS608_STATUS_F1_RESPONSE
Definition: driver_as608.h:180
@ AS608_STATUS_LIB_CLEAR_ERROR
Definition: driver_as608.h:171
@ AS608_STATUS_NO_FRAME
Definition: driver_as608.h:168
@ AS608_STATUS_INPUT_ERROR
Definition: driver_as608.h:157
@ AS608_STATUS_FLASH_WRITE_SUM_ERROR
Definition: driver_as608.h:181
@ AS608_STATUS_PORT_INVALID
Definition: driver_as608.h:190
@ AS608_STATUS_IMAGE_TOO_CLUTTER
Definition: driver_as608.h:160
@ AS608_STATUS_IMAGE_TOO_WET
Definition: driver_as608.h:159
@ AS608_STATUS_IMAGE_TOO_FEW_FEATURE
Definition: driver_as608.h:161
@ AS608_STATUS_REG_INVALID
Definition: driver_as608.h:187
@ AS608_STATUS_FLASH_WRITE_ERROR
Definition: driver_as608.h:185
@ AS608_STATUS_NO_FINGERPRINT
Definition: driver_as608.h:156
@ AS608_STATUS_UNKNOWN
Definition: driver_as608.h:186
@ AS608_STATUS_FLASH_ERROR
Definition: driver_as608.h:178
@ AS608_STATUS_LIB_DELETE_ERROR
Definition: driver_as608.h:170
@ AS608_STATUS_ENROOL_ERROR
Definition: driver_as608.h:191
@ AS608_STATUS_FLASH_WRITE_LENGTH_TOO_LONG
Definition: driver_as608.h:184
@ AS608_STATUS_COMMAND_INVALID
Definition: driver_as608.h:173
@ AS608_STATUS_LIB_ADDR_OVER
Definition: driver_as608.h:165
@ AS608_STATUS_NO_MOVE
Definition: driver_as608.h:177
@ AS608_STATUS_ENTER_LOW_POWER_ERROR
Definition: driver_as608.h:172
@ AS608_STATUS_RESET_ERROR
Definition: driver_as608.h:174
@ AS608_STATUS_NOTE_PAGE_INVALID
Definition: driver_as608.h:189
@ AS608_STATUS_UPLOAD_FEATURE_ERROR
Definition: driver_as608.h:167
@ AS608_STATUS_FLASH_WRITE_HEADER_ERROR
Definition: driver_as608.h:182
@ AS608_STATUS_FLASH_WRITE_LENGTH_ERROR
Definition: driver_as608.h:183
@ AS608_STATUS_UPLOAD_IMAGE_ERROR
Definition: driver_as608.h:169
@ AS608_STATUS_LIB_READ_ERROR
Definition: driver_as608.h:166
@ AS608_STATUS_IMAGE_TOO_DRY
Definition: driver_as608.h:158
@ AS608_STATUS_LIB_FULL
Definition: driver_as608.h:192
@ AS608_BOOL_FALSE
Definition: driver_as608.h:64
@ AS608_BOOL_TRUE
Definition: driver_as608.h:65
@ AS608_GPIO_LEVEL_LOW
Definition: driver_as608.h:145
@ AS608_GPIO_LEVEL_HIGH
Definition: driver_as608.h:146
@ AS608_BUFFER_NUMBER_2
Definition: driver_as608.h:97
@ AS608_BUFFER_NUMBER_1
Definition: driver_as608.h:96
@ AS608_GPIO_NUMBER_0
Definition: driver_as608.h:136
@ AS608_GPIO_NUMBER_1
Definition: driver_as608.h:137
@ AS608_BURN_CODE_MODE_FULL
Definition: driver_as608.h:118
@ AS608_BURN_CODE_MODE_INFO
Definition: driver_as608.h:117
@ AS608_PACKET_SIZE_128_BYTES
Definition: driver_as608.h:87
@ AS608_PACKET_SIZE_256_BYTES
Definition: driver_as608.h:88
@ AS608_PACKET_SIZE_64_BYTES
Definition: driver_as608.h:86
@ AS608_PACKET_SIZE_32_BYTES
Definition: driver_as608.h:85
@ AS608_IMAGE_FEATURE
Definition: driver_as608.h:128
@ AS608_IMAGE_BIN
Definition: driver_as608.h:126
@ AS608_IMAGE_NO_FEATURE
Definition: driver_as608.h:127
@ AS608_LEVEL_3
Definition: driver_as608.h:75
@ AS608_LEVEL_5
Definition: driver_as608.h:77
@ AS608_LEVEL_1
Definition: driver_as608.h:73
@ AS608_LEVEL_4
Definition: driver_as608.h:76
@ AS608_LEVEL_2
Definition: driver_as608.h:74
uint8_t as608_command_write_read(as608_handle_t *handle, uint32_t addr, uint8_t type, uint8_t *input_buffer, uint16_t input_len, uint16_t ms, uint8_t *output_buffer, uint16_t *output_len)
write read data to chip
as608 handle structure definition
Definition: driver_as608.h:213
uint8_t(* uart_flush)(void)
Definition: driver_as608.h:217
uint8_t(* uart_write)(uint8_t *buf, uint16_t len)
Definition: driver_as608.h:218
void(* delay_ms)(uint32_t ms)
Definition: driver_as608.h:219
uint8_t(* uart_deinit)(void)
Definition: driver_as608.h:215
void(* debug_print)(const char *const fmt,...)
Definition: driver_as608.h:220
uint16_t(* uart_read)(uint8_t *buf, uint16_t len)
Definition: driver_as608.h:216
uint16_t packet_size
Definition: driver_as608.h:224
uint8_t(* uart_init)(void)
Definition: driver_as608.h:214
uint8_t buf[384]
Definition: driver_as608.h:222
as608 information structure definition
Definition: driver_as608.h:231
float temperature_max
Definition: driver_as608.h:239
float supply_voltage_max_v
Definition: driver_as608.h:236
uint32_t driver_version
Definition: driver_as608.h:240
float temperature_min
Definition: driver_as608.h:238
float max_current_ma
Definition: driver_as608.h:237
char manufacturer_name[32]
Definition: driver_as608.h:233
float supply_voltage_min_v
Definition: driver_as608.h:235
char interface[8]
Definition: driver_as608.h:234
char chip_name[32]
Definition: driver_as608.h:232
as608 params structure definition
Definition: driver_as608.h:199
uint16_t status
Definition: driver_as608.h:200
as608_level_t level
Definition: driver_as608.h:203
as608_sensor_type_t sensor_type
Definition: driver_as608.h:201
uint32_t address
Definition: driver_as608.h:204
uint16_t n_9600
Definition: driver_as608.h:206
uint16_t fingerprint_size
Definition: driver_as608.h:202
as608_packet_size_t packet_size
Definition: driver_as608.h:205