#pragma once #include "AdcChannelsManager.h" #include "UsbAdcListener.h" #include "AdcChannelSettings.h" #include "FrameParcer.h" namespace Incart::Usb { class RawAdcChannelsManager final : public AdcChannelsManager { private: FrameParcer m_adcParcer; public: RawAdcChannelsManager(uint32_t frameBufferSize, UsbAdcListener* adcListener) : AdcChannelsManager() , m_adcParcer(frameBufferSize) { connect(adcListener, &UsbAdcListener::signalAnswer, this, &RawAdcChannelsManager::handleAdcAnswer, Qt::QueuedConnection); } public: void setConnectedDeviceInfo(const DeviceInfo&) override { } void restart() override { } std::unordered_map getSignalsLsbInfo() override { return {}; } std::string getChannelName(const DevicesInfo::DeviceChannelTypeInfo& channelTypeInfo_) override { return ""; } void setSignalCount(const DevicesInfo::DeviceChannelTypeInfo&, uint8_t ) override { } private slots: void handleAdcAnswer(std::vector buffer, int32_t status) { if (status != DeviceCommand::EStatus::OK) { return; } for (char b : buffer) { if (m_adcParcer.put(static_cast(b))) { std::vector frame = m_adcParcer.getResult(); emit signalTransfer(QByteArray(reinterpret_cast(frame.data()), static_cast(frame.size()))); } } } }; } // namespace Incart::Usb