#pragma once

#include "fgc/IControlChannel.h"
#include "fgc/Logger.h"

namespace fgc {

// No-op control channel for running without an MQTT broker. Publishes are
// dropped (logged at debug) and poll() never supplies a control command, so
// the scheduler stays in automatic-sweep mode (ControlCode 0).
class NullControlChannel : public IControlChannel {
public:
    bool connect() override { return true; }
    void disconnect() override {}
    bool connected() const override { return true; }

    void publishStatus(int code) override {
        LOG_TRACE_CAT(LogCat::Mqtt) << "PUB StatusCode " << code << " (null channel)";
    }
    void publishCamEvent(const CamEvent& e) override {
        LOG_TRACE_CAT(LogCat::Mqtt) << "PUB CamEvent cam=" << e.camera
                                    << " hdg=" << e.heading_decideg << " t=" << e.timestamp_ms
                                    << " (null channel)";
    }

    ControlCommand poll() override { return {}; }
};

}  // namespace fgc
