diff --git a/app/src/sample_data_manager.c b/app/src/sample_data_manager.c index d32734d..de86947 100644 --- a/app/src/sample_data_manager.c +++ b/app/src/sample_data_manager.c @@ -5,7 +5,7 @@ #include "zeeprom_fs.h" #include "znordic.h" -static sample_data_fileinfo_t fileinfocache[MAX_FILE_NUM]; +static sample_data_fileinfo_t fileinfocache[MAX_FILE_NUM * 2]; static uint8_t fileinfocache_count = 0; void sample_data_mgr_init() { zeeprom_fs_init(); } @@ -14,6 +14,7 @@ void sample_data_mgr_uninit() { zeeprom_fs_uinit(); } sample_data_fileinfo_list_t* sample_data_mgr_get_fileinfo_list() { // static sample_data_fileinfo_list_t fileinfo_list; memset(&fileinfo_list, 0, sizeof(fileinfo_list)); + fileinfocache_count = 0; // 读取所有记录信息 zeeprom_header_t* header = zeeprom_fs_get_header(); @@ -22,13 +23,19 @@ sample_data_fileinfo_list_t* sample_data_mgr_get_fileinfo_list() { // zeeprom_sector_info_t* sectorinfo = &header->sectorinfos[i]; if (sectorinfo->usage == 1 && sectorinfo->sector_index_in_file == 0) { // 读取文件信息 - sample_data_fileinfo_t* fileinfo = &fileinfocache[i]; + if (fileinfocache_count >= ZARRAY_SIZE(fileinfocache)) { + ZLOGE("fileinfocache_count >= MAX_FILE_NUM"); + break; + } + + sample_data_fileinfo_t* fileinfo = &fileinfocache[fileinfocache_count]; fileinfo->fileuuid = sectorinfo->fileuuid; memcpy(fileinfo->filename, sectorinfo->filename, sizeof(fileinfo->filename)); fileinfo->size = zeeprom_fs_get_filesize_by_fileuuid(fileinfo->fileuuid); fileinfo_list.fileinfo[fileinfo_list.count] = fileinfo; fileinfo_list.count++; + fileinfocache_count++; } } // 根据文件uuid排序,uuid最大的排在最前面 @@ -44,7 +51,7 @@ sample_data_fileinfo_list_t* sample_data_mgr_get_fileinfo_list() { // return &fileinfo_list; } -bool sample_data_mgr_storage_is_full() { return zeeprom_fs_get_file_num() >= MAX_FILE_NUM; } +bool sample_data_mgr_storage_is_full() { return zeeprom_fs_get_file_num() >= MAX_FILE_NUM; } int32_t sample_data_mgr_get_file_num() { return zeeprom_fs_get_file_num(); } #if 1