// =============================================================================
//  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 <cstdint>

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
