mafpmoc: Cleanup code

This commit is contained in:
Marco Trevisan (Treviño)
2026-06-18 15:47:34 +02:00
parent e1caa3de3b
commit bbd4ca2fdf
+135 -172
View File
@@ -11,23 +11,23 @@ struct _FpiDeviceMafpmoc
FpiUsbTransfer *cmd_transfer; FpiUsbTransfer *cmd_transfer;
gboolean cmd_cancelable; gboolean cmd_cancelable;
gboolean cmd_force_pass; gboolean cmd_force_pass;
gint enroll_stage; int enroll_stage;
gint max_enroll_stage; int max_enroll_stage;
gint max_stored_prints; int max_stored_prints;
guint8 interface_num; uint8_t interface_num;
guint8 press_state; uint8_t press_state;
gint32 finger_status; uint32_t finger_status;
gchar *serial_number; char *serial_number;
gint16 enroll_id; uint16_t enroll_id;
gchar *enroll_user_id; char *enroll_user_id;
guint enroll_identify_index; unsigned enroll_identify_index;
guint16 enroll_identify_id; uint16_t enroll_identify_id;
guint8 enroll_identify_state; uint8_t enroll_identify_state;
guint8 enroll_dupl_del_state; uint8_t enroll_dupl_del_state;
guint8 enroll_dupl_area_state; uint8_t enroll_dupl_area_state;
pmafp_templates_t templates; pmafp_templates_t templates;
gint16 search_id; uint16_t search_id;
guint capture_cnt; unsigned capture_cnt;
FpPrint *identify_new_print; FpPrint *identify_new_print;
FpPrint *identify_match_print; FpPrint *identify_match_print;
}; };
@@ -40,28 +40,25 @@ typedef void (*SynCmdMsgCallback) (FpiDeviceMafpmoc *self,
typedef struct typedef struct
{ {
gint16 cmd; uint16_t cmd;
SynCmdMsgCallback callback; SynCmdMsgCallback callback;
FpiUsbTransfer *cmd_transfer; FpiUsbTransfer *cmd_transfer;
gboolean cmd_cancelable; gboolean cmd_cancelable;
guint16 cmd_request_len; uint16_t cmd_request_len;
guint16 cmd_actual_len; uint16_t cmd_actual_len;
uint8_t recv_buffer[MAFP_USB_BUFFER_SIZE]; uint8_t recv_buffer[MAFP_USB_BUFFER_SIZE];
gboolean cmd_force_pass; gboolean cmd_force_pass;
guint16 crc; uint16_t crc;
} CommandData; } CommandData;
static void mafp_sensor_cmd (FpiDeviceMafpmoc *self, static void mafp_sensor_cmd (FpiDeviceMafpmoc *self,
gint16 cmd, uint16_t cmd,
const guint8 *data, const uint8_t *data,
guint8 data_len, uint8_t data_len,
SynCmdMsgCallback callback); SynCmdMsgCallback callback);
static uint16_t static uint16_t
ma_protocol_crc16_calc ( ma_protocol_crc16_calc ( uint8_t *data, uint32_t data_len, uint32_t start)
uint8_t *data,
uint32_t data_len,
uint32_t start)
{ {
const uint8_t *temp = data; const uint8_t *temp = data;
uint32_t sum = 0; uint32_t sum = 0;
@@ -75,9 +72,7 @@ ma_protocol_crc16_calc (
} }
static void static void
init_pack_header ( init_pack_header (ppack_header pheader, uint16_t frame_len)
ppack_header pheader,
uint16_t frame_len)
{ {
g_assert (pheader); g_assert (pheader);
@@ -97,12 +92,11 @@ init_pack_header (
* while cmd_len = 0, put flag(end or not) in data[0] * while cmd_len = 0, put flag(end or not) in data[0]
*/ */
static uint8_t * static uint8_t *
ma_protocol_build_package ( ma_protocol_build_package (uint32_t package_len,
uint32_t package_len, int16_t cmd,
int16_t cmd, uint8_t cmd_len,
uint8_t cmd_len, const uint8_t *data,
const uint8_t *data, uint32_t data_len)
uint32_t data_len)
{ {
g_autofree uint8_t *ppackage = g_new0 (uint8_t, package_len); g_autofree uint8_t *ppackage = g_new0 (uint8_t, package_len);
pack_header header; pack_header header;
@@ -124,23 +118,13 @@ ma_protocol_build_package (
ppackage[package_len - 2] = (crc >> 8) & 0xFF; ppackage[package_len - 2] = (crc >> 8) & 0xFF;
ppackage[package_len - 1] = crc & 0xFF; ppackage[package_len - 1] = crc & 0xFF;
/* gchar msg[1024] = {0};
gchar pack_str[16] = {0};
for (int i = 0; i < package_len; i++)
{
sprintf(pack_str, "0x%x ", ppackage[i]);
strcat(msg, pack_str);
}
fp_dbg("build pack %s", msg);
*/
return g_steal_pointer (&ppackage); return g_steal_pointer (&ppackage);
} }
static int static int
ma_protocol_parse_header ( ma_protocol_parse_header ( uint8_t *buffer,
uint8_t *buffer, uint32_t buffer_len,
uint32_t buffer_len, pack_header *pheader)
pack_header *pheader)
{ {
if (!buffer || !pheader || buffer_len < PACKAGE_HEADER_SIZE) if (!buffer || !pheader || buffer_len < PACKAGE_HEADER_SIZE)
return -1; return -1;
@@ -150,19 +134,17 @@ ma_protocol_parse_header (
} }
static uint8_t static uint8_t
get_one_bit_value ( get_one_bit_value ( uint8_t src,
uint8_t src, uint8_t bit_num)
uint8_t bit_num)
{ {
return (uint8_t) ((src >> (bit_num - 1)) & 1); return (uint8_t) ((src >> (bit_num - 1)) & 1);
} }
static int static int
ma_protocol_parse_body ( ma_protocol_parse_body ( int16_t cmd,
int16_t cmd, uint8_t *buffer,
uint8_t *buffer, uint16_t buffer_len,
uint16_t buffer_len, pmafp_cmd_response_t presp)
pmafp_cmd_response_t presp)
{ {
const int data_len = buffer_len - 1 - PACKAGE_CRC_SIZE; const int data_len = buffer_len - 1 - PACKAGE_CRC_SIZE;
@@ -231,11 +213,11 @@ mafp_clean_usb_bulk_in (FpDevice *device)
} }
static G_GNUC_PRINTF (4, 5) void static G_GNUC_PRINTF (4, 5) void
mafp_mark_failed ( mafp_mark_failed (FpDevice *dev,
FpDevice *dev, FpiSsm *ssm,
FpiSsm *ssm, uint8_t err_code,
guint8 err_code, const char *msg,
const gchar *msg, ...) ...)
{ {
if (err_code == FP_DEVICE_ERROR_PROTO) if (err_code == FP_DEVICE_ERROR_PROTO)
mafp_clean_usb_bulk_in (dev); mafp_clean_usb_bulk_in (dev);
@@ -265,12 +247,11 @@ fp_cmd_receive_cb (FpiUsbTransfer *transfer,
mafp_cmd_response_t cmd_reponse = {0, }; mafp_cmd_response_t cmd_reponse = {0, };
pack_header header; pack_header header;
uint32_t data_index = 0; uint32_t data_index = 0;
gchar msg[1024] = {0};
if (error) if (error)
{ {
fp_dbg ("error: %d", error->code); fp_dbg ("error: %d", error->code);
if (data->cmd_force_pass) //ex: G_USB_DEVICE_ERROR_TIMED_OUT if (data->cmd_force_pass) /* ex: G_USB_DEVICE_ERROR_TIMED_OUT */
{ {
if (data->callback) if (data->callback)
data->callback (self, &cmd_reponse, NULL); data->callback (self, &cmd_reponse, NULL);
@@ -288,8 +269,6 @@ fp_cmd_receive_cb (FpiUsbTransfer *transfer,
} }
ssm_state = fpi_ssm_get_cur_state (transfer->ssm); ssm_state = fpi_ssm_get_cur_state (transfer->ssm);
//fp_dbg("actual_length: %d", transfer->actual_length);
/* skip zero length package */ /* skip zero length package */
if (transfer->actual_length == 0) if (transfer->actual_length == 0)
{ {
@@ -315,13 +294,6 @@ fp_cmd_receive_cb (FpiUsbTransfer *transfer,
} }
memcpy (data->recv_buffer + data->cmd_actual_len, transfer->buffer, transfer->actual_length); memcpy (data->recv_buffer + data->cmd_actual_len, transfer->buffer, transfer->actual_length);
data->cmd_actual_len += transfer->actual_length - data_index; data->cmd_actual_len += transfer->actual_length - data_index;
if (PRINT_CMD)
{
for (int i = 0; i < PACKAGE_HEADER_SIZE + data->cmd_actual_len && i < 1024; i++)
sprintf (msg + i * 3, "%02X ", data->recv_buffer[i]);
fp_dbg ("RECV: %s", msg);
}
// fp_dbg("cmd_request_len: %d, cmd_actual_len: %d", data->cmd_request_len, data->cmd_actual_len);
if (data->cmd_request_len <= data->cmd_actual_len) if (data->cmd_request_len <= data->cmd_actual_len)
{ {
@@ -359,7 +331,6 @@ fp_cmd_run_state (FpiSsm *ssm,
{ {
FpiUsbTransfer *transfer; FpiUsbTransfer *transfer;
CommandData *data = fpi_ssm_get_data (ssm); CommandData *data = fpi_ssm_get_data (ssm);
gchar msg[1024] = {0};
switch (fpi_ssm_get_cur_state (ssm)) switch (fpi_ssm_get_cur_state (ssm))
{ {
@@ -367,12 +338,6 @@ fp_cmd_run_state (FpiSsm *ssm,
if (data->cmd_transfer) if (data->cmd_transfer)
{ {
data->cmd_transfer->ssm = ssm; data->cmd_transfer->ssm = ssm;
if (PRINT_CMD)
{
for (int i = 0; i < data->cmd_transfer->length && i < 1024; i++)
sprintf (msg + i * 3, "%02X ", data->cmd_transfer->buffer[i]);
fp_dbg ("SEND: %s", msg);
}
fpi_usb_transfer_submit (g_steal_pointer (&data->cmd_transfer), fpi_usb_transfer_submit (g_steal_pointer (&data->cmd_transfer),
CMD_TIMEOUT, NULL, fpi_ssm_usb_transfer_cb, NULL); CMD_TIMEOUT, NULL, fpi_ssm_usb_transfer_cb, NULL);
} }
@@ -434,17 +399,17 @@ fp_cmd_ssm_done_data_free (CommandData *data)
static FpiUsbTransfer * static FpiUsbTransfer *
alloc_cmd_transfer (FpiDeviceMafpmoc *self, alloc_cmd_transfer (FpiDeviceMafpmoc *self,
gint16 cmd, uint16_t cmd,
guint8 cmd_len, uint8_t cmd_len,
const guint8 *data, const uint8_t *data,
guint32 data_len) uint32_t data_len)
{ {
g_return_val_if_fail (data || data_len == 0, NULL); g_return_val_if_fail (data || data_len == 0, NULL);
FpDevice *dev = FP_DEVICE (self); FpDevice *dev = FP_DEVICE (self);
g_autoptr(FpiUsbTransfer) transfer = fpi_usb_transfer_new (dev); g_autoptr(FpiUsbTransfer) transfer = fpi_usb_transfer_new (dev);
uint32_t total_len = PACKAGE_HEADER_SIZE + cmd_len + data_len + PACKAGE_CRC_SIZE; uint32_t total_len = PACKAGE_HEADER_SIZE + cmd_len + data_len + PACKAGE_CRC_SIZE;
guint8 *buffer = ma_protocol_build_package (total_len, cmd, cmd_len, data, data_len); uint8_t *buffer = ma_protocol_build_package (total_len, cmd, cmd_len, data, data_len);
fpi_usb_transfer_fill_bulk_full (transfer, MAFP_EP_BULK_OUT, buffer, total_len, g_free); fpi_usb_transfer_fill_bulk_full (transfer, MAFP_EP_BULK_OUT, buffer, total_len, g_free);
return g_steal_pointer (&transfer); return g_steal_pointer (&transfer);
@@ -452,9 +417,9 @@ alloc_cmd_transfer (FpiDeviceMafpmoc *self,
static void static void
mafp_sensor_cmd (FpiDeviceMafpmoc *self, mafp_sensor_cmd (FpiDeviceMafpmoc *self,
gint16 cmd, uint16_t cmd,
const guint8 *data, const uint8_t *data,
guint8 data_len, uint8_t data_len,
SynCmdMsgCallback callback) SynCmdMsgCallback callback)
{ {
g_autoptr(FpiUsbTransfer) transfer = alloc_cmd_transfer (self, cmd, (cmd < 0 ? 0 : 1), data, data_len); g_autoptr(FpiUsbTransfer) transfer = alloc_cmd_transfer (self, cmd, (cmd < 0 ? 0 : 1), data, data_len);
@@ -479,11 +444,11 @@ mafp_sensor_cmd (FpiDeviceMafpmoc *self,
static void static void
mafp_sensor_control (FpiDeviceMafpmoc *self, mafp_sensor_control (FpiDeviceMafpmoc *self,
guint8 request, uint8_t request,
guint16 value, uint16_t value,
FpiUsbTransferCallback callback, FpiUsbTransferCallback callback,
gpointer user_data, gpointer user_data,
guint16 timeout) uint16_t timeout)
{ {
FpiUsbTransfer *transfer = fpi_usb_transfer_new (FP_DEVICE (self)); FpiUsbTransfer *transfer = fpi_usb_transfer_new (FP_DEVICE (self));
@@ -499,7 +464,7 @@ mafp_sensor_control (FpiDeviceMafpmoc *self,
static mafp_template_t static mafp_template_t
mafp_template_from_print (FpPrint *print) mafp_template_from_print (FpPrint *print)
{ {
const guint16 tpl_id; const uint16_t tpl_id;
g_autoptr(GVariant) data = NULL; g_autoptr(GVariant) data = NULL;
g_autoptr(GVariant) tpl_uid = NULL; g_autoptr(GVariant) tpl_uid = NULL;
@@ -531,8 +496,8 @@ mafp_print_from_template (FpiDeviceMafpmoc *self, mafp_template_t template)
GVariant *data; GVariant *data;
GVariant *uid; GVariant *uid;
GVariant *dev_sn; GVariant *dev_sn;
guint user_id_len; unsigned user_id_len;
guint serial_num_len; unsigned serial_num_len;
print = fp_print_new (FP_DEVICE (self)); print = fp_print_new (FP_DEVICE (self));
@@ -560,8 +525,8 @@ static void
mafp_load_enrolled_ids (FpiDeviceMafpmoc *self, mafp_cmd_response_t *resp) mafp_load_enrolled_ids (FpiDeviceMafpmoc *self, mafp_cmd_response_t *resp)
{ {
uint16_t num = 0; uint16_t num = 0;
gchar msg[1024] = {0}; char msg[1024] = {0};
gchar id_str[16] = {0}; char id_str[16] = {0};
for (uint16_t i = 0; i < sizeof (resp->tpl_table.list); i++) for (uint16_t i = 0; i < sizeof (resp->tpl_table.list); i++)
{ {
@@ -598,7 +563,7 @@ fp_init_handeshake_cb (FpiDeviceMafpmoc *self,
resp->handshake.code[1] == MAFP_HANDSHAKE_CODE2) resp->handshake.code[1] == MAFP_HANDSHAKE_CODE2)
{ {
self->max_enroll_stage = DEFAULT_ENROLL_SAMPLES; self->max_enroll_stage = DEFAULT_ENROLL_SAMPLES;
gchar * value = getenv (MAFP_ENV_ENROLL_SAMPLES); char * value = getenv (MAFP_ENV_ENROLL_SAMPLES);
if (value) if (value)
self->max_enroll_stage = g_ascii_strtoll (value, NULL, 10); self->max_enroll_stage = g_ascii_strtoll (value, NULL, 10);
fp_dbg ("max_enroll_stage: %d", self->max_enroll_stage); fp_dbg ("max_enroll_stage: %d", self->max_enroll_stage);
@@ -758,8 +723,8 @@ fp_enroll_read_tpl_cb (FpiDeviceMafpmoc *self,
} }
fp_dbg ("result: %d", resp->result); fp_dbg ("result: %d", resp->result);
guint8 *resp_buff = (guint8 *) resp; uint8_t *resp_buff = (uint8_t *) resp;
guint16 max_id = 0; uint16_t max_id = 0;
if (resp->result == MAFP_SUCCESS) if (resp->result == MAFP_SUCCESS)
{ {
@@ -799,7 +764,6 @@ fp_enroll_get_image_cb (FpiDeviceMafpmoc *self,
FpEnrollState nextState = FP_ENROLL_VERIFY_GET_IMAGE; FpEnrollState nextState = FP_ENROLL_VERIFY_GET_IMAGE;
//fp_dbg("result: %d, press_state: %d", resp->result, self->press_state);
if (self->press_state == MAFP_PRESS_WAIT_DOWN) if (self->press_state == MAFP_PRESS_WAIT_DOWN)
{ {
fp_dbg ("wait finger down state %d", resp->result); fp_dbg ("wait finger down state %d", resp->result);
@@ -945,7 +909,7 @@ fp_enroll_gen_feature_cb (FpiDeviceMafpmoc *self,
if (self->enroll_dupl_area_state == MAFP_ENROLL_DUPLICATE_AREA_DENY) if (self->enroll_dupl_area_state == MAFP_ENROLL_DUPLICATE_AREA_DENY)
{ {
int remain_stage = self->max_enroll_stage - self->enroll_stage; int remain_stage = self->max_enroll_stage - self->enroll_stage;
//check duplicate area in last 3 times /* check duplicate area in last 3 times */
if (remain_stage > 0 && remain_stage <= 3) if (remain_stage > 0 && remain_stage <= 3)
{ {
fpi_ssm_next_state (self->task_ssm); fpi_ssm_next_state (self->task_ssm);
@@ -1011,10 +975,10 @@ fp_enroll_save_tpl_cb (FpiDeviceMafpmoc *self,
GVariant *uid = NULL; GVariant *uid = NULL;
GVariant *data = NULL; GVariant *data = NULL;
GVariant *dev_sn; GVariant *dev_sn;
guint user_id_len; unsigned user_id_len;
guint serial_num_len; unsigned serial_num_len;
gchar *user_id = NULL; char *user_id = NULL;
gchar *serial_num = NULL; char *serial_num = NULL;
if (error) if (error)
{ {
@@ -1093,7 +1057,7 @@ mafp_pwr_btn_shield_off_cb (FpiUsbTransfer *transfer,
fpi_ssm_mark_failed (transfer->ssm, error); fpi_ssm_mark_failed (transfer->ssm, error);
return; return;
} }
guint8 para = 0; uint8_t para = 0;
mafp_sensor_cmd (self, MOC_CMD_SLEEP, &para, 1, mafp_sleep_cb); mafp_sensor_cmd (self, MOC_CMD_SLEEP, &para, 1, mafp_sleep_cb);
} }
@@ -1244,7 +1208,7 @@ fp_enroll_wait_int (FpiDeviceMafpmoc *self)
static int static int
load_fp_data (FpDevice *dev) load_fp_data (FpDevice *dev)
{ {
const gchar *filename = NULL; const char *filename = NULL;
gboolean fp_exist = false; gboolean fp_exist = false;
GDir *dir = g_dir_open (FPRINT_DATA_PATH, 0, NULL); GDir *dir = g_dir_open (FPRINT_DATA_PATH, 0, NULL);
@@ -1260,11 +1224,11 @@ load_fp_data (FpDevice *dev)
} }
while (NULL != (filename = g_dir_read_name (dir))) while (NULL != (filename = g_dir_read_name (dir)))
{ {
g_autofree gchar *user_path = g_strconcat (FPRINT_DATA_PATH, filename, NULL); g_autofree char *user_path = g_strconcat (FPRINT_DATA_PATH, filename, NULL);
if (g_file_test (user_path, G_FILE_TEST_IS_DIR)) if (g_file_test (user_path, G_FILE_TEST_IS_DIR))
{ {
FpDeviceClass *cls = FP_DEVICE_GET_CLASS (dev); FpDeviceClass *cls = FP_DEVICE_GET_CLASS (dev);
g_autofree gchar *module_path = g_strconcat (user_path, "/", cls->id, NULL); g_autofree char *module_path = g_strconcat (user_path, "/", cls->id, NULL);
fp_dbg ("found data path: %s", module_path); fp_dbg ("found data path: %s", module_path);
if (g_file_test (module_path, G_FILE_TEST_IS_DIR)) if (g_file_test (module_path, G_FILE_TEST_IS_DIR))
{ {
@@ -1301,9 +1265,9 @@ mafp_check_empty (FpiDeviceMafpmoc *self)
fpi_ssm_next_state (self->task_ssm); fpi_ssm_next_state (self->task_ssm);
return 0; return 0;
} }
const gchar * str_ubuntu = "ubuntu"; const char * str_ubuntu = "ubuntu";
GString *version = g_string_new (sysinfo.version); GString *version = g_string_new (sysinfo.version);
gchar *sys_ver = g_string_ascii_down (version)->str; char *sys_ver = g_string_ascii_down (version)->str;
fp_dbg ("check system: %s", g_strrstr (sys_ver, str_ubuntu) ? "ubuntu" : "other"); fp_dbg ("check system: %s", g_strrstr (sys_ver, str_ubuntu) ? "ubuntu" : "other");
gboolean empty = (g_strrstr (sys_ver, str_ubuntu) && !load_fp_data (dev)); gboolean empty = (g_strrstr (sys_ver, str_ubuntu) && !load_fp_data (dev));
@@ -1325,7 +1289,7 @@ static void
fp_enroll_sm_run_state (FpiSsm *ssm, FpDevice *device) fp_enroll_sm_run_state (FpiSsm *ssm, FpDevice *device)
{ {
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device);
guint8 para[PACKAGE_DATA_SIZE_MAX] = { 0 }; uint8_t para[PACKAGE_DATA_SIZE_MAX] = { 0 };
FpPrint *print = NULL; FpPrint *print = NULL;
uint16_t range = 1000; uint16_t range = 1000;
@@ -1340,8 +1304,8 @@ fp_enroll_sm_run_state (FpiSsm *ssm, FpDevice *device)
break; break;
case FP_ENROLL_TEMPLATE_TABLE: case FP_ENROLL_TEMPLATE_TABLE:
para[0] = 0; //page no. para[0] = 0; /* page no. */
mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_TABLE, (const guint8 *) &para, 1, fp_enroll_tpl_table_cb); mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_TABLE, (const uint8_t *) &para, 1, fp_enroll_tpl_table_cb);
break; break;
case FP_ENROLL_READ_TEMPLATE: case FP_ENROLL_READ_TEMPLATE:
@@ -1381,8 +1345,8 @@ fp_enroll_sm_run_state (FpiSsm *ssm, FpDevice *device)
break; break;
case FP_ENROLL_VERIFY_GENERATE_FEATURE: case FP_ENROLL_VERIFY_GENERATE_FEATURE:
para[0] = self->enroll_stage + 1; //verify buffer id start from 1 para[0] = self->enroll_stage + 1; /* verify buffer id start from 1 */
mafp_sensor_cmd (self, MOC_CMD_GEN_FEATURE, (const guint8 *) &para, 1, fp_enroll_gen_feature_cb); mafp_sensor_cmd (self, MOC_CMD_GEN_FEATURE, (const uint8_t *) &para, 1, fp_enroll_gen_feature_cb);
break; break;
case FP_ENROLL_VERIFY_DUPLICATE_AREA: case FP_ENROLL_VERIFY_DUPLICATE_AREA:
@@ -1390,41 +1354,41 @@ fp_enroll_sm_run_state (FpiSsm *ssm, FpDevice *device)
break; break;
case FP_ENROLL_VERIFY_SEARCH: case FP_ENROLL_VERIFY_SEARCH:
para[0] = 1; //buffer id para[0] = 1; /* buffer id */
para[1] = 0; //start id high para[1] = 0; /* start id high */
para[2] = 0; //start id low para[2] = 0; /* start id low */
para[3] = (range >> 8) & 0xff; //range high para[3] = (range >> 8) & 0xff; /* range high */
para[4] = range & 0xff; //range low para[4] = range & 0xff; /* range low */
mafp_sensor_cmd (self, MOC_CMD_SEARCH, (const guint8 *) &para, 5, fp_enroll_verify_search_cb); mafp_sensor_cmd (self, MOC_CMD_SEARCH, (const uint8_t *) &para, 5, fp_enroll_verify_search_cb);
break; break;
case FP_ENROLL_GET_TEMPLATE_INFO: case FP_ENROLL_GET_TEMPLATE_INFO:
para[0] = (self->search_id >> 8) & 0xff; //fp id high para[0] = (self->search_id >> 8) & 0xff; /* fp id high */
para[1] = self->search_id & 0xff; //fp id low para[1] = self->search_id & 0xff; /* fp id low */
mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_INFO, (const guint8 *) &para, 2, fp_enroll_get_tpl_info_cb); mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_INFO, (const uint8_t *) &para, 2, fp_enroll_get_tpl_info_cb);
break; break;
case FP_ENROLL_SAVE_TEMPLATE_INFO: case FP_ENROLL_SAVE_TEMPLATE_INFO:
fpi_device_get_enroll_data (device, &print); fpi_device_get_enroll_data (device, &print);
self->enroll_user_id = fpi_print_generate_user_id (print); self->enroll_user_id = fpi_print_generate_user_id (print);
para[0] = (self->enroll_id >> 8) & 0xff; //fp id high para[0] = (self->enroll_id >> 8) & 0xff; /* fp id high */
para[1] = self->enroll_id & 0xff; //fp id low para[1] = self->enroll_id & 0xff; /* fp id low */
memcpy (para + 2, self->enroll_user_id, strlen (self->enroll_user_id)); memcpy (para + 2, self->enroll_user_id, strlen (self->enroll_user_id));
fp_dbg ("user_id: %s", self->enroll_user_id); fp_dbg ("user_id: %s", self->enroll_user_id);
mafp_sensor_cmd (self, MOC_CMD_SAVE_TEMPLATE_INFO, (const guint8 *) &para, 2 + TEMPLATE_UID_SIZE, fp_enroll_save_tpl_info_cb); mafp_sensor_cmd (self, MOC_CMD_SAVE_TEMPLATE_INFO, (const uint8_t *) &para, 2 + TEMPLATE_UID_SIZE, fp_enroll_save_tpl_info_cb);
break; break;
case FP_ENROLL_SAVE_TEMPLATE: case FP_ENROLL_SAVE_TEMPLATE:
para[0] = 1; //buffer id para[0] = 1; /* buffer id */
para[1] = (self->enroll_id >> 8) & 0xff; //fp id high para[1] = (self->enroll_id >> 8) & 0xff; /* fp id high */
para[2] = self->enroll_id & 0xff; //fp id low para[2] = self->enroll_id & 0xff; /* fp id low */
mafp_sensor_cmd (self, MOC_CMD_SAVE_TEMPLATE, (const guint8 *) &para, 3, fp_enroll_save_tpl_cb); mafp_sensor_cmd (self, MOC_CMD_SAVE_TEMPLATE, (const uint8_t *) &para, 3, fp_enroll_save_tpl_cb);
break; break;
case FP_ENROLL_DELETE_TEMPLATE_INFO_IF_FAILED: case FP_ENROLL_DELETE_TEMPLATE_INFO_IF_FAILED:
para[0] = (self->enroll_id >> 8) & 0xff; //fp id high para[0] = (self->enroll_id >> 8) & 0xff; /* fp id high */
para[1] = self->enroll_id & 0xff; //fp id low para[1] = self->enroll_id & 0xff; /* fp id low */
mafp_sensor_cmd (self, MOC_CMD_SAVE_TEMPLATE_INFO, (const guint8 *) &para, 130, fp_enroll_del_tpl_info_cb); mafp_sensor_cmd (self, MOC_CMD_SAVE_TEMPLATE_INFO, (const uint8_t *) &para, 130, fp_enroll_del_tpl_info_cb);
break; break;
case FP_ENROLL_EXIT: case FP_ENROLL_EXIT:
@@ -1487,7 +1451,6 @@ fp_verify_get_image_cb (FpiDeviceMafpmoc *self,
} }
FpVerifyState nextState = FP_VERIFY_GET_IMAGE; FpVerifyState nextState = FP_VERIFY_GET_IMAGE;
//fp_dbg("result: %d, press_state: %d", resp->result, self->press_state);
if (self->press_state == MAFP_PRESS_WAIT_DOWN) if (self->press_state == MAFP_PRESS_WAIT_DOWN)
{ {
fp_dbg ("wait finger down state %d", resp->result); fp_dbg ("wait finger down state %d", resp->result);
@@ -1802,7 +1765,7 @@ static void
fp_verify_sm_run_state (FpiSsm *ssm, FpDevice *device) fp_verify_sm_run_state (FpiSsm *ssm, FpDevice *device)
{ {
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device);
guint8 para[PACKAGE_DATA_SIZE_MAX] = { 0 }; uint8_t para[PACKAGE_DATA_SIZE_MAX] = { 0 };
GPtrArray *prints = NULL; GPtrArray *prints = NULL;
FpPrint *print = NULL; FpPrint *print = NULL;
@@ -1813,8 +1776,8 @@ fp_verify_sm_run_state (FpiSsm *ssm, FpDevice *device)
break; break;
case FP_VERIFY_TEMPLATE_TABLE: case FP_VERIFY_TEMPLATE_TABLE:
para[0] = 0; //page no. para[0] = 0; /* page no. */
mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_TABLE, (const guint8 *) &para, 1, fp_verify_tpl_table_cb); mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_TABLE, (const uint8_t *) &para, 1, fp_verify_tpl_table_cb);
break; break;
case FP_VERIFY_GET_STARTUP_RESULT: case FP_VERIFY_GET_STARTUP_RESULT:
@@ -1854,8 +1817,8 @@ fp_verify_sm_run_state (FpiSsm *ssm, FpDevice *device)
break; break;
case FP_VERIFY_GENERATE_FEATURE: case FP_VERIFY_GENERATE_FEATURE:
para[0] = 1; //buffer id para[0] = 1; /* buffer id */
mafp_sensor_cmd (self, MOC_CMD_GEN_FEATURE, (const guint8 *) &para, 1, fp_verify_gen_feature_cb); mafp_sensor_cmd (self, MOC_CMD_GEN_FEATURE, (const uint8_t *) &para, 1, fp_verify_gen_feature_cb);
break; break;
case FP_VERIFY_SEARCH_STEP: case FP_VERIFY_SEARCH_STEP:
@@ -1884,7 +1847,7 @@ fp_verify_sm_run_state (FpiSsm *ssm, FpDevice *device)
self->search_id = tpl.id; self->search_id = tpl.id;
para[0] = (tpl.id >> 8) & 0xff; para[0] = (tpl.id >> 8) & 0xff;
para[1] = tpl.id & 0xff; para[1] = tpl.id & 0xff;
mafp_sensor_cmd (self, MOC_CMD_MATCH_WITHFID, (const guint8 *) &para, 2, fp_verify_search_step_cb); mafp_sensor_cmd (self, MOC_CMD_MATCH_WITHFID, (const uint8_t *) &para, 2, fp_verify_search_step_cb);
break; break;
case FP_VERIFY_GET_TEMPLATE_INFO: case FP_VERIFY_GET_TEMPLATE_INFO:
@@ -1896,9 +1859,9 @@ fp_verify_sm_run_state (FpiSsm *ssm, FpDevice *device)
} }
else else
{ {
para[0] = (self->search_id >> 8) & 0xff; //fp id high para[0] = (self->search_id >> 8) & 0xff; /* fp id high */
para[1] = self->search_id & 0xff; //fp id low para[1] = self->search_id & 0xff; /* fp id low */
mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_INFO, (const guint8 *) &para, 2, fp_verify_get_tpl_info_cb); mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_INFO, (const uint8_t *) &para, 2, fp_verify_get_tpl_info_cb);
} }
break; break;
@@ -2005,19 +1968,19 @@ static void
fp_list_run_state (FpiSsm *ssm, FpDevice *device) fp_list_run_state (FpiSsm *ssm, FpDevice *device)
{ {
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device);
guint8 para[PACKAGE_DATA_SIZE_MAX] = { 0 }; uint8_t para[PACKAGE_DATA_SIZE_MAX] = { 0 };
switch (fpi_ssm_get_cur_state (ssm)) switch (fpi_ssm_get_cur_state (ssm))
{ {
case FP_LIST_TEMPLATE_TABLE: case FP_LIST_TEMPLATE_TABLE:
para[0] = 0; //page no. para[0] = 0; /* page no. */
mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_TABLE, (const guint8 *) &para, 1, fp_list_tpl_table_cb); mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_TABLE, (const uint8_t *) &para, 1, fp_list_tpl_table_cb);
break; break;
case FP_LIST_GET_TEMPLATE_INFO: case FP_LIST_GET_TEMPLATE_INFO:
para[0] = (self->templates->total_list[self->templates->index].id >> 8) & 0xff; //fp id high para[0] = (self->templates->total_list[self->templates->index].id >> 8) & 0xff; /* fp id high */
para[1] = self->templates->total_list[self->templates->index].id & 0xff; //fp id low para[1] = self->templates->total_list[self->templates->index].id & 0xff; /* fp id low */
mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_INFO, (const guint8 *) &para, 2, fp_list_get_tpl_info_cb); mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_INFO, (const uint8_t *) &para, 2, fp_list_get_tpl_info_cb);
break; break;
} }
} }
@@ -2102,7 +2065,7 @@ fp_delete_get_tpl_info_cb (FpiDeviceMafpmoc *self,
"Failed to match device serial number"); "Failed to match device serial number");
return; return;
} }
if (g_strcmp0 (resp->tpl_info.uid, tpl.uid) != 0) if (!g_str_equal (resp->tpl_info.uid, tpl.uid))
{ {
mafp_mark_failed (dev, self->task_ssm, FP_DEVICE_ERROR_GENERAL, mafp_mark_failed (dev, self->task_ssm, FP_DEVICE_ERROR_GENERAL,
"Failed to match template uid"); "Failed to match template uid");
@@ -2167,7 +2130,7 @@ static void
fp_delete_run_state (FpiSsm *ssm, FpDevice *device) fp_delete_run_state (FpiSsm *ssm, FpDevice *device)
{ {
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device);
guint8 para[PACKAGE_DATA_SIZE_MAX] = { 0 }; uint8_t para[PACKAGE_DATA_SIZE_MAX] = { 0 };
FpPrint *print = NULL; FpPrint *print = NULL;
fpi_device_get_delete_data (device, &print); fpi_device_get_delete_data (device, &print);
@@ -2176,28 +2139,28 @@ fp_delete_run_state (FpiSsm *ssm, FpDevice *device)
switch (fpi_ssm_get_cur_state (ssm)) switch (fpi_ssm_get_cur_state (ssm))
{ {
case FP_DELETE_TEMPLATE_TABLE: case FP_DELETE_TEMPLATE_TABLE:
para[0] = 0; //page no. para[0] = 0; /* page no. */
mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_TABLE, (const guint8 *) &para, 1, fp_delete_tpl_table_cb); mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_TABLE, (const uint8_t *) &para, 1, fp_delete_tpl_table_cb);
break; break;
case FP_DELETE_GET_TEMPLATE_INFO: case FP_DELETE_GET_TEMPLATE_INFO:
para[0] = (delete_tpl.id >> 8) & 0xff; //fp id high para[0] = (delete_tpl.id >> 8) & 0xff; /* fp id high */
para[1] = delete_tpl.id & 0xff; //fp id low para[1] = delete_tpl.id & 0xff; /* fp id low */
mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_INFO, (const guint8 *) &para, 2, fp_delete_get_tpl_info_cb); mafp_sensor_cmd (self, MOC_CMD_GET_TEMPLATE_INFO, (const uint8_t *) &para, 2, fp_delete_get_tpl_info_cb);
break; break;
case FP_DELETE_CLEAR_TEMPLATE_INFO: case FP_DELETE_CLEAR_TEMPLATE_INFO:
para[0] = (delete_tpl.id >> 8) & 0xff; //fp id high para[0] = (delete_tpl.id >> 8) & 0xff; /* fp id high */
para[1] = delete_tpl.id & 0xff; //fp id low para[1] = delete_tpl.id & 0xff; /* fp id low */
mafp_sensor_cmd (self, MOC_CMD_SAVE_TEMPLATE_INFO, (const guint8 *) &para, 130, fp_delete_clear_tpl_info_cb); mafp_sensor_cmd (self, MOC_CMD_SAVE_TEMPLATE_INFO, (const uint8_t *) &para, 130, fp_delete_clear_tpl_info_cb);
break; break;
case FP_DELETE_TEMPLATE: case FP_DELETE_TEMPLATE:
para[0] = (delete_tpl.id >> 8) & 0xff; //tpl id high para[0] = (delete_tpl.id >> 8) & 0xff; /* tpl id high */
para[1] = delete_tpl.id & 0xff; //tpl id low para[1] = delete_tpl.id & 0xff; /* tpl id low */
para[2] = 0; //range high para[2] = 0; /* range high */
para[3] = 1; //range low para[3] = 1; /* range low */
mafp_sensor_cmd (self, MOC_CMD_DELETE_TEMPLATE, (const guint8 *) &para, 4, fp_delete_tpl_cb); mafp_sensor_cmd (self, MOC_CMD_DELETE_TEMPLATE, (const uint8_t *) &para, 4, fp_delete_tpl_cb);
break; break;
} }
} }
@@ -2273,14 +2236,14 @@ fp_delete_all_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
static void static void
mafp_probe (FpDevice *device) mafp_probe (FpDevice *device)
{ {
fp_dbg ("mafp_probe"); g_autoptr(GUsbInterface) interface = NULL;
GUsbDevice *usb_dev; GUsbDevice *usb_dev;
GError *error = NULL; GError *error = NULL;
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device);
g_autofree gchar *serial = NULL; g_autofree char *serial = NULL;
uint64_t driver_data;
g_autoptr(GUsbInterface) interface = NULL; fp_dbg ("mafp_probe");
guint64 driver_data;
usb_dev = fpi_device_get_usb_device (device); usb_dev = fpi_device_get_usb_device (device);
if (!g_usb_device_open (usb_dev, &error)) if (!g_usb_device_open (usb_dev, &error))
@@ -2347,7 +2310,7 @@ mafp_init (FpDevice *device)
fp_dbg ("mafp_init"); fp_dbg ("mafp_init");
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (device);
GError *error = NULL; GError *error = NULL;
guint64 driver_data; uint64_t driver_data;
driver_data = fpi_device_get_driver_data (device); driver_data = fpi_device_get_driver_data (device);
fp_dbg ("driver_data 0x%zx", driver_data); fp_dbg ("driver_data 0x%zx", driver_data);
@@ -2527,4 +2490,4 @@ fpi_device_mafpmoc_class_init (FpiDeviceMafpmocClass *klass)
dev_class->list = mafp_template_list; dev_class->list = mafp_template_list;
fpi_device_class_auto_initialize_features (dev_class); fpi_device_class_auto_initialize_features (dev_class);
} }