// ============================================================================= // system/hwid.h -- Hardware ID from ESP32 eFuse (Sprint 8) // ============================================================================= // // The ESP32 has a 6-byte unique MAC burned into eFuse by the manufacturer. // We use it as a hardware binding token for the activation license. // // The HWID is exposed via two Modbus input registers so the Studio can // read it and generate the activation token offline. // // NOTE: The Modbus register map must be extended in Sprint 8+ to include // INPUT_HWID_HI (addr 9, upper 16 bits) and INPUT_HWID_LO (addr 10, // lower 16 bits of the middle 2 bytes). Full 6-byte MAC is exposed as // three uint16 registers: [0..1], [2..3], [4..5]. // ============================================================================= #pragma once #include namespace arautopilot::system { /// Read the ESP32 eFuse MAC into ``out[6]``. /// Returns true on success; false if the eFuse read fails. bool hwid_get_mac(uint8_t out[6]); /// Return a 32-bit summary hash of the 6-byte MAC (for quick comparisons). uint32_t hwid_hash(); /// Format the MAC as "AA:BB:CC:DD:EE:FF" into ``buf[18]``. void hwid_format(uint8_t mac[6], char buf[18]); } // namespace arautopilot::system