/**
 * Rev147 — IMU/attitude source abstraction.
 *
 * Diseño: el plugin lee datos de actitud, heading y aceleración desde fuentes
 * heterogéneas (Signal K core, pypilot local, pypilot remoto, IMU I2C nativo,
 * MacArthur HAT vía pypilot). Esta capa abstrae la fuente para que el resto
 * del código (Fase 1 wave detection, Fase 2 wave height) consuma datos
 * uniformes sin saber de dónde vienen.
 *
 * Principios:
 *   - No bloquear arranque si no hay IMU disponible.
 *   - Errores son estados (`error`/`stale`/`invalid`), no excepciones fatales.
 *   - El usuario puede fijar manualmente la fuente (`preferredSource`) y la
 *     auto-detección la respeta mientras esté sana.
 *   - Pypilot tiene prioridad sobre raw I2C cuando está disponible — pypilot
 *     ya hace calibración/filtrado/compensación.
 *   - Raw I2C es opt-in (DIY mode), nunca por defecto.
 */
export const DEFAULT_IMU_CONFIG = {
    autoDetect: true,
    preferredSource: "auto",
    pypilot: {
        host: "",
        port: 23322,
        remoteHosts: [],
    },
    rawI2c: {
        enabled: false,
        bus: "/dev/i2c-1",
        allowedModels: ["ICM-20948", "MPU-9250", "MPU-9255"],
    },
    staleAfterSeconds: 10,
    minQuality: "any",
};
/** Logs estándar que cada fuente / manager debe emitir cuando aplique. */
export const IMU_LOG_MESSAGES = {
    usingSignalK: "IMU: using Signal K attitude source",
    usingPypilotLocal: "IMU: using local pypilot key/value source",
    usingPypilotRemote: "IMU: remote pypilot detected",
    macarthurAssumed: "IMU: MacArthur/Qwiic assumed, waiting for pypilot/OpenPlotter data",
    rawI2cDisabled: "IMU: raw I2C disabled by default",
    sourceStale: "IMU: source stale, switching fallback",
    noSource: "IMU: no valid source available",
};
