mirror of
https://github.com/AlexandreRouma/SDRPlusPlus.git
synced 2025-10-28 15:38:11 +01:00
89 lines
2.2 KiB
C++
89 lines
2.2 KiB
C++
#pragma once
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
|
|
namespace ryfi {
|
|
/**
|
|
* RyFi Protocol Packet.
|
|
*/
|
|
class Packet {
|
|
public:
|
|
// Default constructor
|
|
Packet();
|
|
|
|
/**
|
|
* Create a packet from its content.
|
|
* @param content Content of the packet.
|
|
* @param size Number of bytes of content.
|
|
*/
|
|
Packet(uint8_t* content, int size);
|
|
|
|
// Copy constructor
|
|
Packet(const Packet& b);
|
|
|
|
// Move constructor
|
|
Packet(Packet&& b);
|
|
|
|
// Destructor
|
|
~Packet();
|
|
|
|
// Copy assignment operator
|
|
Packet& operator=(const Packet& b);
|
|
|
|
// Move assignment operator
|
|
Packet& operator=(Packet&& b);
|
|
|
|
// Cast to bool operator
|
|
operator bool() const;
|
|
|
|
/**
|
|
* Get the size of the content of the packet.
|
|
* @return Size of the content of the packet.
|
|
*/
|
|
int size() const;
|
|
|
|
/**
|
|
* Get the content of the packet. The pointer is only valid until reallocation or deletion.
|
|
* @return Content of the packet.
|
|
*/
|
|
const uint8_t* data() const;
|
|
|
|
/**
|
|
* Set the content of the packet.
|
|
* @param content Content of the packet.
|
|
* @param size Number of bytes of content.
|
|
*/
|
|
void setContent(uint8_t* content, int size);
|
|
|
|
/**
|
|
* Get the size of the serialized packet.
|
|
* @return Size of the serialized packet.
|
|
*/
|
|
int serializedSize() const;
|
|
|
|
/**
|
|
* Serialize the packet to bytes.
|
|
* @param bytes Buffer to which to write the serialized packet.
|
|
* @return Size of the serialized packet.
|
|
*/
|
|
int serialize(uint8_t* bytes) const;
|
|
|
|
/**
|
|
* Deserialize a packet from bytes.
|
|
* TODO
|
|
*/
|
|
static bool deserialize(uint8_t* bytes, int size, Packet& pkt);
|
|
|
|
// Maximum size of the content of the packet.
|
|
static inline const int MAX_CONTENT_SIZE = 0xFFFF;
|
|
|
|
// Maximum size of the serialized packet.
|
|
static inline const int MAX_SERIALIZED_SIZE = MAX_CONTENT_SIZE + 2;
|
|
|
|
private:
|
|
void allocate(int newSize);
|
|
|
|
uint8_t* _content = NULL;
|
|
int _size = 0;
|
|
};
|
|
} |