// // Created by misaki on 2025/9/2. // #include "ToolsClass.h" #include #include #include #include #include #include #include static const char *TAG = "ToolsClass"; std::string ToolsClass::getChipSerialNumber() { // 获取芯片序列号(17 字节长的 "Chip ID" (乐鑫官方唯一序列号)) std::array id{}; /* 下面这个宏在 ESP32-S3 上展开为 17 byte 序列号字段,直接可用 */ esp_err_t err = esp_efuse_read_field_blob(ESP_EFUSE_OPTIONAL_UNIQUE_ID, id.data(), id.size() * 8); if (err != ESP_OK) { ESP_LOGE(TAG, "read Chip ID failed: %s", esp_err_to_name(err)); return ""; } std::stringstream ss; for (uint8_t v : id) ss << std::hex << std::setw(2) << std::setfill('0') << static_cast(v); return ss.str(); } std::string ToolsClass::getChipMAC() { std::array mac{}; esp_efuse_mac_get_default(mac.data()); // 读出厂 MAC std::stringstream ss; for (size_t i = 0; i < mac.size(); ++i) { ss << std::hex << std::setw(2) << std::setfill('0') << static_cast(mac[i]); if (i + 1 != mac.size()) ss << ':'; } return ss.str(); }