函数路径vendor/common/mesh_common.cvoid ble_mac_init(){#if RELAY_ROUTE_FILTE_TEST_ENflash_read_page(FLASH_ADR_RELAY_ROUTE_MAC, sizeof(relay_route_mac), (u8 *)relay_route_mac);u8 max_null[4] {0xff,0xff,0xff,0xff};if(0 ! memcmp(max_null, relay_route_mac[0], sizeof(max_null))){relay_route_en 1;}#endifif(AIS_ENABLE || LLSYNC_ENABLE || flash_sector_mac_address 0){ return ; } u8 mac_read[8]; *****//读取flash 0x76000地址的数据***** flash_read_page(flash_sector_mac_address, 8, mac_read);//判断数据是否为0xffffffffffff 如果不是则为MAC地址,否则重新生成MAC地址//MAC地址前3字节为随机数后3字节为固定值不同型号值不同然后再将MAC写入到FLASH中u8 ff_six_byte[6] {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};if ( memcmp(mac_read, ff_six_byte, 6) ) {memcpy(tbl_mac, mac_read, 6); //copy public address from flash}else{ //no public address on flashu8 value_rand[5];generateRandomNum(5, value_rand);tbl_mac[0] value_rand[0];tbl_mac[1] value_rand[1];tbl_mac[2] value_rand[2];#if(MCU_CORE_TYPE MCU_CORE_8258) tbl_mac[3] 0x38; //company id: 0xA4C138 tbl_mac[4] 0xC1; tbl_mac[5] 0xA4; #elif(MCU_CORE_TYPE MCU_CORE_8278) tbl_mac[3] 0xD1; //company id: 0xC119D1 tbl_mac[4] 0x19; tbl_mac[5] 0xC4; #elif(MCU_CORE_TYPE MCU_CORE_TC321X) tbl_mac[3] 0x4A; //company id: 0xD0AB4A tbl_mac[4] 0xAB; tbl_mac[5] 0xD0; #else tbl_mac[3] U32_BYTE0(PDA_COMPANY_ID); tbl_mac[4] U32_BYTE1(PDA_COMPANY_ID); tbl_mac[5] U32_BYTE2(PDA_COMPANY_ID); #endif flash_write_page (flash_sector_mac_address, 6, tbl_mac); }}