#ifndef SERIALSOURCE_H
#define SERIALSOURCE_H

#include <QSerialPort>
#include <QVector>
#include "idatasource.h"

/** @brief Fuente de datos que recibe información desde un puerto serial.
 *
 *  Lee líneas CSV del puerto serial (formato: "23.5,72.1,95.3") y las
 *  distribuye entre los canales de sensores configurados.
 */
class SerialSource : public IDataSource {
    Q_OBJECT

public:
    explicit SerialSource(QObject* parent = nullptr);

    /// Configura el puerto y la velocidad de transmisión
    void setPort(const QString& portName, int baudRate = 9600);

    void start() override;
    void stop() override;
    int sensorCount() const override;
    const SensorChannel& sensor(int index) const override;

private slots:
    void onDataReady();  ///< Slot que procesa los datos recibidos del serial

private:
    QSerialPort m_port;
    QVector<SensorChannel> m_sensors;
    QString m_buffer;  ///< Buffer temporal para ensamblar líneas incompletas
};

#endif // SERIALSOURCE_H
