Skip to content

File baseClasses.h

File List > DynamicPacketCodec > include > baseClasses.h

Go to the documentation of this file

#pragma once
#include "Arduino.h"
#include <vector>

class Packet;
class Component;

class Packet
{
public:
    Packet();
    std::vector<Component*> components;
    uint8_t getBitSize() const;
    uint8_t getByteSize() const;
    void addComponent(Component* newComponent);
    uint8_t* encode();
    uint8_t decode(uint8_t* packet);
protected:
    uint8_t bitSize;
};

class Component
{
public:
    Component(uint8_t size, const uint8_t priority = 0);
    virtual void encode(uint8_t* packet) = 0;
    virtual uint8_t decode(uint8_t* packet) = 0;
    uint8_t size;
    uint8_t bitPosition;
    uint8_t priority;
    Packet* packet;
protected:
    void bitWriter(uint32_t dataBits, uint8_t* packet) const;
    void bitReset(uint8_t* packet) const;
    void bitReader(uint32_t* dataBits, uint8_t* packet) const;
};