#pragma once #include #include #include #include #include #include #include #include "tools/cabana/streams/livestream.h" struct SocketCanStreamConfig { QString device = ""; // TODO: support multiple devices/buses at once }; class SocketCanStream : public LiveStream { Q_OBJECT public: SocketCanStream(QObject *parent, SocketCanStreamConfig config_ = {}); static AbstractOpenStreamWidget *widget(AbstractStream **stream); static bool available(); inline QString routeName() const override { return QString("Live Streaming From Socket CAN %1").arg(config.device); } protected: void streamThread() override; bool connect(); SocketCanStreamConfig config = {}; std::unique_ptr device; }; class OpenSocketCanWidget : public AbstractOpenStreamWidget { Q_OBJECT public: OpenSocketCanWidget(AbstractStream **stream); bool open() override; QString title() override { return tr("&SocketCAN"); } private: void refreshDevices(); QComboBox *device_edit; SocketCanStreamConfig config = {}; };