mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2026-06-10 18:24:19 +00:00
egis_etu905: Use fpi-bytes-reader to get the firmware string
This commit is contained in:
@@ -1348,12 +1348,14 @@ egis_etu905_fw_version_cb (FpDevice *device,
|
|||||||
gsize length_in,
|
gsize length_in,
|
||||||
GError *error)
|
GError *error)
|
||||||
{
|
{
|
||||||
fp_dbg ("Firmware version callback");
|
|
||||||
FpiDeviceEgisEtu905 *self = FPI_DEVICE_EGIS_ETU905 (device);
|
FpiDeviceEgisEtu905 *self = FPI_DEVICE_EGIS_ETU905 (device);
|
||||||
g_autofree gchar *fw_version = NULL;
|
FpiByteReader reader;
|
||||||
gsize prefix_length;
|
const guint8 *fw_version_data = NULL;
|
||||||
guchar *fw_version_start;
|
const guint prefix_length = egis_etu905_read_prefix_len + 2 + 3 + 1;
|
||||||
gsize fw_version_length;
|
gsize fw_version_length;
|
||||||
|
g_autofree gchar *fw_version = NULL;
|
||||||
|
|
||||||
|
fp_dbg ("Firmware version callback");
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
@@ -1380,10 +1382,29 @@ egis_etu905_fw_version_cb (FpDevice *device,
|
|||||||
* come with every payload Then we will also skip the carriage return and take
|
* come with every payload Then we will also skip the carriage return and take
|
||||||
* all but the last 2 bytes as the FW Version
|
* all but the last 2 bytes as the FW Version
|
||||||
*/
|
*/
|
||||||
prefix_length = egis_etu905_read_prefix_len + 2 + 3 + 1;
|
fpi_byte_reader_init (&reader, buffer_in, length_in);
|
||||||
fw_version_start = buffer_in + prefix_length;
|
|
||||||
fw_version_length = length_in - prefix_length - rsp_fw_version_suffix_len;
|
if (!fpi_byte_reader_set_pos (&reader, prefix_length))
|
||||||
fw_version = g_strndup ((gchar *) fw_version_start, fw_version_length);
|
{
|
||||||
|
fpi_ssm_mark_failed (self->task_ssm,
|
||||||
|
fpi_device_error_new_msg (FP_DEVICE_ERROR_PROTO,
|
||||||
|
"Device firmware response "
|
||||||
|
"too short for prefix."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fw_version_length = fpi_byte_reader_get_remaining (&reader) - rsp_fw_version_suffix_len;
|
||||||
|
|
||||||
|
if (!fpi_byte_reader_get_data (&reader, fw_version_length, &fw_version_data))
|
||||||
|
{
|
||||||
|
fpi_ssm_mark_failed (self->task_ssm,
|
||||||
|
fpi_device_error_new_msg (FP_DEVICE_ERROR_PROTO,
|
||||||
|
"Device firmware response "
|
||||||
|
"too short for version string."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fw_version = g_strndup ((gchar *) fw_version_data, fw_version_length);
|
||||||
|
|
||||||
fp_info ("Device firmware version is %s", fw_version);
|
fp_info ("Device firmware version is %s", fw_version);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user