From e126e2057d0ad25229ae9af757fa680921fab0bf Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 19 Apr 2025 20:25:25 +0800 Subject: [PATCH] =?UTF-8?q?v1104=20|=20=E4=BF=AE=E5=A4=8D=20projeidcard?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E5=8D=A1=20BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subboard100_idcard_reader/eeprom_service.cpp | 20 ++++++++++++-------- usrc/version.h | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/usrc/subboards/subboard100_idcard_reader/eeprom_service.cpp b/usrc/subboards/subboard100_idcard_reader/eeprom_service.cpp index ba01b6d..2d12cfa 100644 --- a/usrc/subboards/subboard100_idcard_reader/eeprom_service.cpp +++ b/usrc/subboards/subboard100_idcard_reader/eeprom_service.cpp @@ -12,6 +12,9 @@ using namespace iflytop; #define SECTOR_NUM (2 * 8) #define MAX_SIZE (SECTOR_SIZE * SECTOR_NUM) // 2k +#define READ_SECTOR_SIZE (32) +#define READ_SECTOR_NUM (2 * 8 * 4) + #define TAG "EEPROMService" /******************************************************************************* @@ -164,17 +167,18 @@ void EEPROMService::detect_online() { int32_t EEPROMService::a8000_idcard_reader_read_raw(int32_t index, uint8_t* data, int32_t* len) { zlock_guard guard(m_mutex); if (!m_nowonline) return err::kdevice_offline; - if (*len < SECTOR_SIZE) return err::kbuffer_not_enough; - ZLOGI(TAG, "read: %d", index); - - uint16_t add = index * SECTOR_SIZE; - *len = SECTOR_SIZE; + if (*len < READ_SECTOR_SIZE) return err::kbuffer_not_enough; + int readlen = *len; - if (add >= MAX_SIZE) { - *len = 0; + uint16_t add = index * readlen; + *len = readlen; + if (*len + add > MAX_SIZE) { + *len = MAX_SIZE - add; + } + if (*len <= 0) { return 0; } - + ZLOGI(TAG, "read: %d", index); memcpy(data, m_idcardcache + add, *len); return 0; } diff --git a/usrc/version.h b/usrc/version.h index 88f9da9..a3cc52b 100644 --- a/usrc/version.h +++ b/usrc/version.h @@ -1,2 +1,2 @@ #pragma once -#define APP_VERSION 1103 +#define APP_VERSION 1104