Browse Source

sample_data_mgr_write 写入测试ok

3lead_uart_test_ok_version
zhaohe 1 year ago
parent
commit
bf8d9d9366
  1. 3
      .vscode/settings.json
  2. 12
      app/config/sdk_config.h
  3. 61
      app/src/one_conduction/one_conduction_main.c
  4. 28
      app/src/one_conduction/sample_data_manager.c
  5. 3
      app/src/one_conduction/sample_data_manager.h
  6. 68
      app/src/one_conduction/zeeprom_fs.c
  7. 9
      app/src/one_conduction/zeeprom_fs.h
  8. 2
      libznordic

3
.vscode/settings.json

@ -83,7 +83,8 @@
"font.h": "c",
"display_manager.h": "c",
"wave_drawer.h": "c",
"sample_data_manager.h": "c"
"sample_data_manager.h": "c",
"zeeprom_fs.h": "c"
},
"files.encoding": "gbk"
}

12
app/config/sdk_config.h

@ -7743,7 +7743,7 @@
// <i> longer one will be fragmented.
#ifndef NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE
#define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 64
#define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 1024
#endif
// <o> NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS - Period before retrying writing to RTT
@ -7759,7 +7759,7 @@
// <i> and scheme with retry is applied again.
#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_CNT
#define NRF_LOG_BACKEND_RTT_TX_RETRY_CNT 3
#define NRF_LOG_BACKEND_RTT_TX_RETRY_CNT 10
#endif
// </e>
@ -7767,7 +7767,7 @@
// <e> NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend
//==========================================================
#ifndef NRF_LOG_BACKEND_UART_ENABLED
#define NRF_LOG_BACKEND_UART_ENABLED 0
#define NRF_LOG_BACKEND_UART_ENABLED 1
#endif
// <o> NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin
#ifndef NRF_LOG_BACKEND_UART_TX_PIN
@ -7834,7 +7834,7 @@
// <i> RAM memory usage.
#ifndef NRF_LOG_MSGPOOL_ELEMENT_COUNT
#define NRF_LOG_MSGPOOL_ELEMENT_COUNT 20
#define NRF_LOG_MSGPOOL_ELEMENT_COUNT 40
#endif
// </h>
@ -7865,7 +7865,7 @@
// <16384=> 16384
#ifndef NRF_LOG_BUFSIZE
#define NRF_LOG_BUFSIZE 2048
#define NRF_LOG_BUFSIZE 4096
#endif
// <q> NRF_LOG_CLI_CMDS - Enable CLI commands for the module.
@ -7925,7 +7925,7 @@
// <1024=> 1024
#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE
#define NRF_LOG_STR_PUSH_BUFFER_SIZE 256
#define NRF_LOG_STR_PUSH_BUFFER_SIZE 512
#endif
// <o> NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH.

61
app/src/one_conduction/one_conduction_main.c

@ -7,7 +7,7 @@
#include "sample_data_manager.h"
#include "znordic.h"
ZDATACHANNEL_DEF(m_zhrs, 2 /*回调事件优先??*/, 1 /*client num*/);
ZDATACHANNEL_DEF(m_zhrs, 2 /*鍥炶皟浜嬩欢浼樺厛??*/, 1 /*client num*/);
/*******************************************************************************
* TOOLS *
@ -15,7 +15,7 @@ ZDATACHANNEL_DEF(m_zhrs, 2 /*
void zdatachannel_data_handler(zdatachannel_evt_t* p_evt) {
/**
* @brief ??
* @brief ??
*/
if (p_evt->type == ZDATACHANNEL_EVT_RX_DATA) {
ZLOGI("rx:%s", hex2str(p_evt->params.rx_data.p_data, p_evt->params.rx_data.length));
@ -25,28 +25,22 @@ void zdatachannel_data_handler(zdatachannel_evt_t* p_evt) {
#define SAMPLES 100
#define AMPLITUDE 50
static void test_tx_timer_cb(void* p_context) {
// static int i;
// float val = 50 + AMPLITUDE * sin(2 * PI * i / SAMPLES);
// // NRF_LOG_FLOAT(val);
// ZLOGI("tx:" NRF_LOG_FLOAT_MARKER, NRF_LOG_FLOAT(val));
// i++;
// dsp_mgr_draw_point(val);
// SingleLeadECG_eeprom_init();
// static uint8_t eepromw_test_data[256];
// static uint8_t eepromw_rx_data[256];
// for (size_t i = 0; i < 256; i++) {
// eepromw_test_data[i] = i;
// }
// SingleLeadECG_eeprom_write(0, eepromw_test_data, 256);
// SingleLeadECG_eeprom_read(0, eepromw_rx_data, 256);
// NRF_LOG_HEXDUMP_INFO(eepromw_rx_data, 48);
// NRF_LOG_HEXDUMP_INFO(eepromw_rx_data+64, 64);
// for (size_t i = 0; i < 256; i++) {
// ZLOGI_BLOCK("eepromw_rx_data[%d] = %d", i, eepromw_rx_data[i]);
// }
sample_data_mgr_init();
static sample_data_filename_t filename = {0x00, 0x02, 0x03, 0x04, 0x05};
static uint8_t wd[256];
for (size_t i = 0; i < 256; i++) wd[i] = i;
int fd;
for (size_t i = 0; i < 20; i++) {
filename.year += 1;
fd = sample_data_mgr_open(&filename, kwrflag_write_only);
for (size_t i = 0; i < 10; i++) {
sample_data_mgr_write(fd, wd, 256);
}
sample_data_mgr_close(fd);
}
ZLOGI_BLOCK("write end....");
sample_data_mgr_dump_fileinfo_list();
sample_data_mgr_uninit();
}
extern uint32_t g_nrf_log_tx_pin;
@ -56,9 +50,6 @@ APP_TIMER_DEF(m_drawpoint_timer);
* INIT *
*******************************************************************************/
void on_service_init(void) {
/**
* @brief ??
*/
ZLOGI("init zdatachannel service");
zdatachannel_init_t zdatachannle_init;
memset(&zdatachannle_init, 0, sizeof(zdatachannle_init));
@ -67,6 +58,8 @@ void on_service_init(void) {
}
void one_conduction_main() {
g_nrf_log_tx_pin = 41;
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init(0, 20);
NRF_LOG_INFO("compile time :%s", __TIME__);
@ -86,20 +79,6 @@ void one_conduction_main() {
dsp_mgr_poweron();
dsp_mgr_change_to_sampling();
sample_data_mgr_init();
static sample_data_filename_t filename = {0x01, 0x02, 0x03, 0x04, 0x05};
static uint8_t wd[256];
for (size_t i = 0; i < 256; i++) wd[i] = i;
int fd = sample_data_mgr_open(&filename);
sample_data_mgr_write(fd, wd, 256);
sample_data_mgr_close(fd);
zeeprom_fs_dump_sector_state();
// sample_data_mgr_dump_fileinfo_list();
sample_data_mgr_uninit();
// SingleLeadECG_eeprom_write(0, eepromw_test_data, 256);
ZERROR_CHECK(app_timer_create(&m_drawpoint_timer, APP_TIMER_MODE_SINGLE_SHOT, test_tx_timer_cb));

28
app/src/one_conduction/sample_data_manager.c

@ -13,29 +13,27 @@ 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));
//
zeeprom_header_t* header = zeeprom_fs_get_header();
uint16_t fileoff = 0;
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) {
//
sample_data_fileinfo_t* fileinfo = &fileinfocache[fileoff];
sample_data_fileinfo_t* fileinfo = &fileinfocache[i];
fileinfo->fileuuid = sectorinfo->fileuuid;
memcpy(fileinfo->filename, sectorinfo->filename, sizeof(fileinfo->filename));
fileinfo->size = zeeprom_fs_get_filesize(fileinfo->fileuuid);
fileoff += sectorinfo->datalen;
fileinfo_list.fileinfo[fileoff] = fileinfo;
fileinfo_list.fileinfo[fileinfo_list.count] = fileinfo;
fileinfo_list.count++;
}
}
// uuid排序uuid最大的排在最前面
for (uint16_t i = 0; i < fileoff; i++) {
for (uint16_t j = i + 1; j < fileoff; j++) {
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];
@ -47,18 +45,14 @@ sample_data_fileinfo_list_t* sample_data_mgr_get_fileinfo_list() { //
}
#if 1
static const char* filename2str(uint8_t* filename) {
static char filename_str[17];
for (size_t i = 0; i < 8; i++) {
filename_str[i * 2] = (filename[i] >> 4) + '0';
filename_str[i * 2 + 1] = (filename[i] & 0x0f) + '0';
}
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++) {
@ -67,14 +61,16 @@ void sample_data_mgr_dump_fileinfo_list() {
}
}
int32_t sample_data_mgr_open(sample_data_filename_t* filename) {
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() >= FILE_MAX_COUNT) {
zeeprom_fs_delete_the_oldest_file();
}
return zeeprom_fs_open((uint8_t*)filename, NULL, 0);
}
return zeeprom_fs_open((uint8_t*)filename, flag);
}
int32_t sample_data_mgr_close(int32_t fileId) { return zeeprom_fs_close(fileId); }
int32_t sample_data_mgr_write(int32_t fileId, const uint8_t* data, int32_t size) { return zeeprom_fs_write(fileId, data, size); }

3
app/src/one_conduction/sample_data_manager.h

@ -1,5 +1,6 @@
#pragma once
#include <stdint.h>
#include "zeeprom_fs.h"
void sample_data_mgr_init();
@ -31,7 +32,7 @@ void sample_data_mgr_uninit();
sample_data_fileinfo_list_t* sample_data_mgr_get_fileinfo_list();
int32_t sample_data_mgr_open(sample_data_filename_t* filename);
int32_t sample_data_mgr_open(sample_data_filename_t* filename, wrflag_t flag);
int32_t sample_data_mgr_close(int32_t fileId);
int32_t sample_data_mgr_write(int32_t fileId, const uint8_t* data, int32_t size);

68
app/src/one_conduction/zeeprom_fs.c

@ -59,7 +59,7 @@ int zeeprom_fs_uinit() { //
zeeprom_header_t* zeeprom_fs_get_header() { return &m_eeprom_header; }
int zeeprom_fs_open(uint8_t* filename, uint8_t* usrdata[], uint8_t usrdata_len) {
int zeeprom_fs_open(uint8_t* filename, wrflag_t wrflag) {
ZASSERT(m_is_init);
/**
* @brief
@ -77,25 +77,12 @@ int zeeprom_fs_open(uint8_t* filename, uint8_t* usrdata[], uint8_t usrdata_len)
return -1;
}
zeeprom_sector_info_t* sectorHeaderInfo = sector_mgr_find_fileheader_by_filename(filename);
if (sectorHeaderInfo) {
/**
* @brief
*/
//
fileHander->fileuuid = sectorHeaderInfo->fileuuid;
fileHander->file_offset = 0;
fileHander->fd = fileHander->fd;
fileHander->sector_header = sectorHeaderInfo;
fileHander->file_size = sector_mgr_file_get_size(fileHander->fileuuid);
memcpy(fileHander->filename, filename, 8);
memcpy(fileHander->usrdata, sectorHeaderInfo->usrdata, sizeof(sectorHeaderInfo->usrdata));
sector_mgr_open_sector(fileHander->fileuuid);
return fileHander->fd;
} else {
/**
* @brief
*/
if (wrflag == kwrflag_write_only) {
/*******************************************************************************
* *
*******************************************************************************/
zeeprom_sector_info_t* sectorHeaderInfo = NULL;
zeeprom_fs_delete_by_name(filename);
sectorHeaderInfo = sector_mgr_force_find_idle_sector();
if (!sectorHeaderInfo) {
@ -111,13 +98,31 @@ int zeeprom_fs_open(uint8_t* filename, uint8_t* usrdata[], uint8_t usrdata_len)
sectorHeaderInfo->sector_index_in_file = 0;
sectorHeaderInfo->datalen = 0;
sectorHeaderInfo->fileuuid = m_eeprom_header.fileuuid++;
if (usrdata) memcpy(sectorHeaderInfo->usrdata, usrdata, usrdata_len);
fileHander->fileuuid = sectorHeaderInfo->fileuuid;
fileHander->sector_header = sectorHeaderInfo;
fileHander->file_offset = 0;
fileHander->file_size = 0;
return fileHander->fd;
} else {
/*******************************************************************************
* *
*******************************************************************************/
zeeprom_sector_info_t* sectorHeaderInfo = sector_mgr_find_fileheader_by_filename(filename);
if (sectorHeaderInfo) {
fileHander->fileuuid = sectorHeaderInfo->fileuuid;
fileHander->file_offset = 0;
fileHander->fd = fileHander->fd;
fileHander->sector_header = sectorHeaderInfo;
fileHander->file_size = sector_mgr_file_get_size(fileHander->fileuuid);
memcpy(fileHander->filename, filename, 8);
memcpy(fileHander->usrdata, sectorHeaderInfo->usrdata, sizeof(sectorHeaderInfo->usrdata));
sector_mgr_open_sector(fileHander->fileuuid);
return fileHander->fd;
} else {
filehandler_rlease(fileHander->fd);
return -1;
}
}
}
@ -159,7 +164,6 @@ int zeeprom_fs_write(int fileid, const uint8_t* data, int32_t size) {
ZLOGE("sector_mgr_get_sector_rom_add fail");
return -1;
}
ZLOGI("wadd=%d", wadd);
ZASSERT(wadd % 256 == 0);
ZASSERT(wadd >= EEPROM_SECTOR_SIZE);
zeeprom_write(wadd + endsector->datalen, data, size);
@ -171,6 +175,7 @@ int zeeprom_fs_write(int fileid, const uint8_t* data, int32_t size) {
if (endsector->datalen == EEPROM_SECTOR_SIZE) {
zeeprom_sector_info_t* newsector = sector_mgr_force_find_idle_sector();
if (!newsector) {
ZLOGE("sector_mgr_force_find_idle_sector fail");
return -1;
}
@ -349,7 +354,7 @@ static void filehandler_rlease(int fd) {
// file_created_index
static int32_t sector_mgr_find_earliest_file_created_index() {
int32_t earliest_file_created_index = 0xFFFFFFFF;
int32_t earliest_file_created_index = INT32_MAX;
for (int i = 0; i < MAX_SECTOR_NUM; i++) {
zeeprom_sector_info_t* sinfo = &m_eeprom_header.sectorinfos[i];
if (sinfo->usage == 1) {
@ -400,7 +405,6 @@ static zeeprom_sector_info_t* sector_mgr_force_find_idle_sector() {
* @brief
*/
int32_t earliest_file_created_index = sector_mgr_find_earliest_file_created_index();
if (sector_mgr_sector_is_open(earliest_file_created_index)) {
return NULL;
}
@ -518,21 +522,11 @@ int zeeprom_fs_dump_sector_state() {
ZLOGI_BLOCK("zeeprom_fs_dump_sector_state\n");
for (int i = 0; i < MAX_SECTOR_NUM; i++) {
zeeprom_sector_info_t* sinfo = &m_eeprom_header.sectorinfos[i];
#if 0
uint8_t usage;
uint8_t opened;
uint8_t filename[8]; //
int32_t sector_index_in_file; //
int32_t datalen; //
int32_t fileuuid; // index判断文件创建的先后顺序
uint8_t usrdata[20];
#endif
if (sinfo->usage == 1) {
ZLOGI_BLOCK("[%d]: usage=%d opened=%d", i, sinfo->usage, sinfo->opened);
ZLOGI_BLOCK(" fname=%s, index_in_file=%d, datalen=%d, fileuuid=%d\n", filename2str(sinfo->filename), sinfo->sector_index_in_file, sinfo->datalen, sinfo->fileuuid);
ZLOGI_BLOCK(" fname=%s, index_in_file=%d, datalen=%d, fileuuid=%d", filename2str(sinfo->filename), sinfo->sector_index_in_file, sinfo->datalen, sinfo->fileuuid);
} else {
ZLOGI_BLOCK("[%d]: usage=%d\n", i, sinfo->usage);
ZLOGI_BLOCK("[%d]: usage=%d", i, sinfo->usage);
}
}
return 0;

9
app/src/one_conduction/zeeprom_fs.h

@ -41,9 +41,15 @@ typedef struct {
int zeeprom_fs_init();
int zeeprom_fs_uinit();
typedef enum {
kwrflag_read_only,
kwrflag_write_only,
} wrflag_t;
zeeprom_header_t* zeeprom_fs_get_header();
int zeeprom_fs_open(uint8_t* filename, uint8_t* usrdata[], uint8_t usrdata_len);
int zeeprom_fs_open(uint8_t* filename, wrflag_t flag);
int zeeprom_fs_close(int fileid);
int zeeprom_fs_write(int fileid, const uint8_t* data, int32_t size);
@ -57,4 +63,3 @@ int zeeprom_fs_delete(int32_t fileuuid);
int zeeprom_fs_delete_by_name(uint8_t* filename);
int zeeprom_fs_dump_sector_state();

2
libznordic

@ -1 +1 @@
Subproject commit c0196969d9981245400057e8c8ef8567fc6c93ab
Subproject commit e16602d90ecda24a2033df814b5aabf86f360e8b
Loading…
Cancel
Save