// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "commands/CommandAbstract.h" #include "types.h" #include #include class HoymilesRadio { public: serial_u DtuSerial(); virtual void setDtuSerial(uint64_t serial); bool isIdle(); bool isInitialized(); template T* enqueCommand() { _commandQueue.push(std::make_shared()); return static_cast(_commandQueue.back().get()); } protected: static serial_u convertSerialToRadioId(serial_u serial); void dumpBuf(const char* info, uint8_t buf[], uint8_t len); bool checkFragmentCrc(fragment_t* fragment); virtual void sendEsbPacket(CommandAbstract* cmd) = 0; void sendRetransmitPacket(uint8_t fragment_id); void sendLastPacketAgain(); serial_u _dtuSerial; std::queue> _commandQueue; bool _isInitialized = false; bool _busyFlag = false; };