tahamajs's picture
download
raw
1.28 kB
#ifndef PROTOCOL_H
#define PROTOCOL_H
#include <CPS4042/Units/Byte.h>
#include <queue>
namespace Protocols
{
template <typename Gpio>
class AbstractProtocol
{
public:
AbstractProtocol() = default;
virtual ~AbstractProtocol() = default; // <-- add this to allow deletion
virtual void run(Gpio& gpio) = 0;
virtual void write(Byte byte) = 0;
virtual Byte read() = 0;
bool isDataAvailable() const { return !m_buffer.empty(); }
size_t bufferSize() const { return m_buffer.size(); } // <-- helper added
protected:
std::queue<Byte> m_buffer;
};
template <typename BoardType, typename Gpio>
class AbstractI2C : public AbstractProtocol<Gpio>
{
public:
using BoardPtr = std::remove_pointer_t<boost::remove_cv_ref_t<BoardType>>*;
explicit AbstractI2C(BoardPtr board) : m_board(board) {}
virtual void init(Byte address) = 0;
protected:
BoardPtr m_board;
};
template <typename BoardType, typename Gpio>
class AbstractUsart : public AbstractProtocol<Gpio>
{
public:
using BoardPtr = std::remove_pointer_t<boost::remove_cv_ref_t<BoardType>>*;
explicit AbstractUsart(BoardPtr board) : m_board(board) {}
protected:
BoardPtr m_board;
};
} // namespace Protocols
#endif

Xet Storage Details

Size:
1.28 kB
·
Xet hash:
20026204b76f1c4eb71728130724a46f95f21d54b84e76c0db8bdfa139a396b7

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.