nrf

NRF FDS 的使用
#define DEF_NAME “sky_uart”
#define DEF_ADV_INTERVEL 500
#define DEF_TX_POWER 0
#define DEF_UART_BAUT 115200

uint16_t my_programs_file_id=0x0001;
uint16_t my_programs_rec_key=0x0001;
fds_record_desc_t my_programs_desc = {0};
fds_find_token_t my_programs_tok = {0};
typedef struct
{
uint8_t device_name[20];
uint8_t my_tx_power;
uint16_t my_adv_intervel;
uint32_t my_uart_baut;
}my_programs_t;
my_programs_t my_programs;

void factoyr_program(void)
{
strcpy(my_programs.device_name,DEF_NAME);
my_programs.my_adv_intervel=DEF_ADV_INTERVEL;
my_programs.my_tx_power=DEF_TX_POWER;
my_programs.my_uart_baut=DEF_UART_BAUT;
}
void sky_fds_init(void)
{
uint32_t rc;
(void) fds_register(fds_evt_handler);

 rc = fds_init();
APP_ERROR_CHECK(rc);

fds_stat_t stat = {0};
rc = fds_stat(&stat);
APP_ERROR_CHECK(rc);

NRF_LOG_INFO("Found %d valid records.", stat.valid_records);
NRF_LOG_INFO("Found %d dirty records (ready to be garbage collected).", stat.dirty_records);

fds_gc();

}

static fds_record_t my_programs_record =
{
.file_id = 0x0001,
.key = 0x0001,
.data.p_data = &my_programs,
/* The length of a record is always expressed in 4-byte units (words). */
.data.length_words =sizeof(my_programs_t) / sizeof(uint32_t),
};
void sky_fds_load(void)
{
uint32_t rc;
rc = fds_record_find(my_programs_record.file_id,my_programs_record.key,&my_programs_desc, &my_programs_tok);
if(rc==NRF_SUCCESS)
{
NRF_LOG_INFO(“fined my_program fs data\r\n”);
fds_flash_record_t config = {0};

    /* Open the record and read its contents. */
    rc = fds_record_open(&my_programs_desc, &config);
	if(rc==NRF_SUCCESS)
	{
	   NRF_LOG_INFO("record open success\r\n");
	   memcpy(&my_programs, config.p_data, sizeof(my_programs_t));
	   NRF_LOG_INFO("my_programs.device_name:%s\r\n",my_programs.device_name);
	   NRF_LOG_INFO("my_programs.my_adv_intervel:%d\r\n",my_programs.my_adv_intervel);
	   NRF_LOG_INFO("my_programs.my_tx_power:%d\r\n",my_programs.my_tx_power);
	   NRF_LOG_INFO("my_programs.my_uart_baut:%d\r\n",my_programs.my_uart_baut);
	   rc = fds_record_close(&my_programs_desc);
       if(rc==NRF_SUCCESS)
	   {
	      NRF_LOG_INFO("record close success\r\n");
	   }	
	}       
}
else
{
   factoyr_program(); 
   rc = fds_record_write(&my_programs_desc, &my_programs_record);
   if(rc==NRF_SUCCESS)
   {
	  NRF_LOG_INFO("write data success\r\n");
   }      			
}	

}
void sky_fds_upda(void)
{
uint32_t rc;
my_programs_record.data.p_data= &my_programs;
my_programs_record.data.length_words =sizeof(my_programs_t) / sizeof(uint32_t);
rc = fds_record_update(&my_programs_desc, &my_programs_record);
if(rc==NRF_SUCCESS)
{
NRF_LOG_INFO(“updata success\r\n”);
}

}

猜你喜欢

转载自blog.csdn.net/ty_buyu/article/details/83474530
nrf
今日推荐