当前位置: 首页 > news >正文

泰凌825x之UUID代码剖析

路径:vemdpr/common/user_proc.c
void uuid_create_by_mac(u8 *mac,u8uuid)
{
//固定GUID
uuid_mesh_t NameSpace_DNS = { /
6ba7b810-9dad-11d1-80b4-00c04fd430c8 */
0x6ba7b810,
0x9dad,
0x11d1,
0x80, 0xb4,
{0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8}
};

char name_string[16] = {0}; memcpy(name_string,mac,6); ***//通过MD5生成UUID*** uuid_create_md5_from_name((uuid_mesh_t *)uuid, NameSpace_DNS, name_string, 15); //special proc to set the mac address into the uuid part #if PAIR_PROVISION_ENABLE char head_flag[] = PAIR_PROV_UUID_FLAG; memcpy(uuid,head_flag, sizeof(head_flag)); #elif (!defined(WIN32) && MD_REMOTE_PROV) uuid_mesh_t * p_uuid = (uuid_mesh_t * )uuid; memcpy(p_uuid->node,mac,6); // just for showing mac on UI of VC remote scanning. #endif

}
#define NORMAL_MODE_DEV_UUID_CUSTOMIZE_EN (0)

void user_prov_multi_device_uuid(void)
{
#ifndef WIN32
#if (AIS_ENABLE)
set_dev_uuid_for_sha256();// 使用SHA256方案
#elif (MESH_USER_DEFINE_MODE == MESH_AES_ENABLE)
uuid_create_by_mac(tbl_mac,prov_para.device_uuid);//MAC->UUID
#elif (MESH_USER_DEFINE_MODE == MESH_GN_ENABLE)
set_dev_uuid_for_simple_flow(prov_para.device_uuid);//简单流程
#elif (MESH_USER_DEFINE_MODE == MESH_MI_ENABLE)
// NO NEED DEV UUID
#elif LLSYNC_PROVISION_AUTH_OOB//低功耗方案
llsync_mesh_dev_uuid_get(LLSYNC_MESH_UNNET_ADV_BIT, prov_para.device_uuid, sizeof(prov_para.device_uuid));
#elif PLATFORM_TELINK_EN
set_dev_uuid_for_platform_telink(prov_para.device_uuid);
#else // (MESH_USER_DEFINE_MODE == MESH_NORMAL_MODE and all other)
if(PROVISION_FLOW_SIMPLE_EN){
set_dev_uuid_for_simple_flow(prov_para.device_uuid);
}else{
#if (CERTIFY_BASE_ENABLE )
cert_set_uuid(prov_para.device_uuid);
return ;
#endif

#if NORMAL_MODE_DEV_UUID_CUSTOMIZE_EN // TBD u8 uuid_read[16]; flash_read_page(FLASH_ADR_DEV_UUID,16,uuid_read); if(get_flash_data_is_valid(uuid_read,sizeof(uuid_read))){//device uuid was burned in flash memcpy(prov_para.device_uuid, uuid_read, sizeof(prov_para.device_uuid)); }else #endif { uuid_create_by_mac(tbl_mac,prov_para.device_uuid); } } #endif

#endif
}
在SDK中默认NORMAL_MODE_DEV_UUID_CUNSTOMIZE_EN为0,程序根据MAC和MD5自动生成UUDI,默认流程:user_prov_multi_device_uuid()->uuid_create_by_mac()->uuid_create_md5_from_name()
用户自己定义UUID方法:
1.NORAM_MODE_UUID_CUSTOMIZE_EN = 1
2.读取FLASH地址中的数据,如果此地址中的数据有效则为UUID,否则根据MAC生成UUDI
UUID在FLASH中的保存地址0X77000+0X810
用户可以直接修改此地址中的数据实现自定义UUID

http://www.jsqmd.com/news/458221/

相关文章:

  • 大数据的农业大棚环境数据温度预测系统设计与实现
  • 【Linux系统编程】目录和用户操作 时间函数与实例
  • HP8304@ACP#HP8304与MT3905参数对比
  • 汇川H3U带10轴(3伺服7步进)+IT6100E触摸屏项目,上下料机,7个步进加了一个4PM...
  • 增加Swap分区
  • 专科生收藏!用户挚爱的AI论文网站 —— 千笔·专业学术智能体
  • 科研人福音!AI写专著工具大推荐,让创作如行云流水般顺畅
  • 广州迅腾文化传播有限公司发布“阿处共识2.0”:深耕数字化资产管理,构建“恒温”逻辑协同生态
  • 探索自适应滤波器:从LMS算法到Simulink仿真
  • 如何在出售Windows11/10/8/7前彻底清除电脑数据
  • 信捷码垛程序(无宏密码版)
  • 系统编码规范文件Word
  • 【Gemini快速】在美国的工作场合中,一个新人如何在任何时间遇到任何人都不尴尬
  • 监控机房NTP同步时钟卫星校时电子钟实现时间戳统一
  • 本地部署 Ollama 完整指南:3 分钟让大模型在你电脑上跑起来
  • 文献检索关键词用几个最合适?给你一个可操作的范围
  • Next 10 TCP并发,数据库
  • 排序算法的终极博弈:从复杂度推导到工程选型实战
  • keil破解时报TOOLS.INI_TOOLCHAIN NOT INSTALLED解决
  • 全维度测评主流视频会议软件,精选高效协作之选
  • 【稳健之道】第二篇:Mock 的艺术 —— 隔离外部世界的“混沌”
  • Python部署卡壳工业MES?Java+YOLOv11+Spring Boot 3.4完美对接PLC!
  • 搭了个AI快讯自动化系统,每天花15分钟看全球AI动态,竟遭Claude封号了
  • MetaNovas两轮融资,AI改写材料研发格局
  • 讲讲2026年学校制冷设备一站式采购批发,如何选择靠谱厂家 - 工业推荐榜
  • 一文吃透AI合规:算法备案、大模型备案、大模型登记!
  • 口碑好的中央空调厂家排名,浙江省有哪些值得选 - mypinpai
  • KIHU快狐|75寸落地全面屏广告机高清展示教学会议信息发布终端
  • 大数据基于Python的大模型岗位人才需求可视化分析
  • 什么是 Java 的 Timer?