ble测试存档
This commit is contained in:
@ -2,61 +2,73 @@
|
||||
#include "system/syscfg_id.h"
|
||||
#include "nvs.h"
|
||||
|
||||
// 2. 定义一个唯一的配置项ID (必须在1-49之间)
|
||||
#define CFG_FACTORY_INFO_ID 10
|
||||
// 2. 定义唯一的配置项ID
|
||||
#define CFG_FACTORY_INFO_ID 10 // 旧的、通用的出厂信息ID (已废弃)
|
||||
#define CFG_RC_MAC_ADDR_ID 11 // 新的、专门用于存储遥控器配对MAC的ID
|
||||
|
||||
/**
|
||||
* @brief 将出厂信息写入Flash
|
||||
*
|
||||
* @param info 指向要写入的出厂信息结构体的指针
|
||||
* @return 实际写入的长度, <0: 失败
|
||||
* @brief 将主板MAC地址写入Flash
|
||||
*/
|
||||
int nvs_write_factory_info(const factory_info_t *info)
|
||||
int nvs_write_main_board_mac(const u8 *mac_addr)
|
||||
{
|
||||
if (!info) {
|
||||
if (!mac_addr) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("--> Writing factory info to flash...\n");
|
||||
int ret = syscfg_write(CFG_FACTORY_INFO_ID, (void*)info, sizeof(factory_info_t));
|
||||
if (ret != sizeof(factory_info_t)) {
|
||||
printf("!!! syscfg_write factory info failed, ret = %d\n", ret);
|
||||
rc_nvs_data_t nvs_data;
|
||||
memcpy(nvs_data.main_board_mac, mac_addr, MAIN_BOARD_MAC_ADDR_LENGTH);
|
||||
|
||||
printf("--> Writing main board MAC to flash...\n");
|
||||
int ret = syscfg_write(CFG_RC_MAC_ADDR_ID, &nvs_data, sizeof(rc_nvs_data_t));
|
||||
if (ret != sizeof(rc_nvs_data_t)) {
|
||||
printf("!!! syscfg_write main board MAC failed, ret = %d\n", ret);
|
||||
} else {
|
||||
printf("--> syscfg_write factory info success.\n");
|
||||
printf("--> syscfg_write main board MAC success.\n");
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 从Flash读取出厂信息
|
||||
*
|
||||
* @param info 指向用于存储读取数据的出厂信息结构体的指针
|
||||
* @return 实际读取的长度, <0: 失败 (例如尚未写入过)
|
||||
* @brief 从Flash读取主板MAC地址
|
||||
*/
|
||||
int nvs_read_factory_info(factory_info_t *info)
|
||||
int nvs_read_main_board_mac(u8 *mac_addr)
|
||||
{
|
||||
if (!info) {
|
||||
if (!mac_addr) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("--> Reading factory info from flash...\n");
|
||||
int ret = syscfg_read(CFG_FACTORY_INFO_ID, (void*)info, sizeof(factory_info_t));
|
||||
if (ret != sizeof(factory_info_t)) {
|
||||
printf("!!! syscfg_read factory info failed, ret = %d. Maybe not set yet.\n", ret);
|
||||
// 如果读取失败,清空结构体以避免使用脏数据
|
||||
memset(info, 0, sizeof(factory_info_t));
|
||||
rc_nvs_data_t nvs_data;
|
||||
printf("--> Reading main board MAC from flash...\n");
|
||||
int ret = syscfg_read(CFG_RC_MAC_ADDR_ID, &nvs_data, sizeof(rc_nvs_data_t));
|
||||
|
||||
if (ret != sizeof(rc_nvs_data_t)) {
|
||||
printf("!!! syscfg_read main board MAC failed, ret = %d. Maybe not set yet.\n", ret);
|
||||
memset(mac_addr, 0, MAIN_BOARD_MAC_ADDR_LENGTH);
|
||||
} else {
|
||||
printf("--> syscfg_read factory info success.\n");
|
||||
// 可以在这里打印读取到的信息以供调试
|
||||
printf(" Product ID: %s\n", info->product_id);
|
||||
printf(" Serial No: %s\n", info->serial_number);
|
||||
printf(" HW Version: 0x%x\n", info->hw_version);
|
||||
printf("--> syscfg_read main board MAC success.\n");
|
||||
memcpy(mac_addr, nvs_data.main_board_mac, MAIN_BOARD_MAC_ADDR_LENGTH);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// =================================================================================
|
||||
// 以下为旧的通用出厂信息API,已废弃
|
||||
// =================================================================================
|
||||
|
||||
int nvs_write_factory_info(const factory_info_t *info)
|
||||
{
|
||||
printf("WARNING: nvs_write_factory_info is deprecated.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
int nvs_read_factory_info(factory_info_t *info)
|
||||
{
|
||||
printf("WARNING: nvs_read_factory_info is deprecated.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 清空Flash中的出厂信息
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user