|
|
#include "sample_data_manager.h"
#include <stdarg.h>
#include "zeeprom_fs.h"
#include "znordic.h"
static sample_data_fileinfo_t fileinfocache[MAX_FILE_NUM * 2]; static uint8_t fileinfocache_count = 0;
void sample_data_mgr_init() { zeeprom_fs_init(); } 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();
for (uint16_t i = 0; i < ZARRAY_SIZE(header->sectorinfos); i++) { zeeprom_sector_info_t* sectorinfo = &header->sectorinfos[i]; if (sectorinfo->usage == 1 && sectorinfo->sector_index_in_file == 0) { // ��ȡ�ļ���Ϣ
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->checksum = zeeprom_fs_get_checksum_by_fileuuid(fileinfo->fileuuid);
fileinfo_list.fileinfo[fileinfo_list.count] = fileinfo; fileinfo_list.count++; fileinfocache_count++; } } // �����ļ�uuid������uuid������������ǰ��
for (uint16_t i = 0; i < fileinfo_list.count; i++) { for (uint16_t j = i + 1; j < fileinfo_list.count; j++) { if (fileinfo_list.fileinfo[i]->fileuuid < fileinfo_list.fileinfo[j]->fileuuid) { sample_data_fileinfo_t* tmp = fileinfo_list.fileinfo[i]; fileinfo_list.fileinfo[i] = fileinfo_list.fileinfo[j]; fileinfo_list.fileinfo[j] = tmp; } } } return &fileinfo_list; }
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
static const char* filename2str(uint8_t* filename) { static char filename_str[32]; sprintf(filename_str, "%02x%02x%02x%02x%02x%02x%02x%02x", filename[0], filename[1], filename[2], filename[3], filename[4], filename[5], filename[6], filename[7]); return filename_str; } #endif
void sample_data_mgr_dump_fileinfo_list() { zeeprom_fs_dump_sector_state(); sample_data_fileinfo_list_t* fileinfo_list = sample_data_mgr_get_fileinfo_list(); ZLOGI_BLOCK("fileinfo_list->count=%d\n", fileinfo_list->count); for (uint16_t i = 0; i < fileinfo_list->count; i++) { sample_data_fileinfo_t* fileinfo = fileinfo_list->fileinfo[i]; ZLOGI_BLOCK("[%d]: filename=%s, fileuuid=%d, size=%d", i, filename2str(fileinfo->filename), fileinfo->fileuuid, fileinfo->size); } }
int32_t sample_data_mgr_open(sample_data_filename_t* filename, wrflag_t flag) { /**
* @brief �鿴�ļ����� */ if (flag == kwrflag_write_only) { if (zeeprom_fs_get_file_num() >= MAX_FILE_NUM) { zeeprom_fs_delete_the_oldest_file(); } } return zeeprom_fs_open((uint8_t*)filename, flag); } int32_t sample_data_mgr_close(int32_t fd) { return zeeprom_fs_close(fd); } int32_t sample_data_mgr_write(int32_t fd, const uint8_t* data, int32_t size) { return zeeprom_fs_write(fd, data, size); } int32_t sample_data_mgr_read(int32_t fd, uint8_t* data, int32_t size) { return zeeprom_fs_read(fd, data, size); } int32_t sample_data_mgr_get_file_size_by_fd(int32_t fd) { return zeeprom_fs_get_filesize_by_fd(fd); } int32_t sample_data_mgr_delete_file(sample_data_filename_t* filename) { return zeeprom_fs_delete_by_name((uint8_t*)filename); }
|