mirror of
				https://github.com/AlexandreRouma/SDRPlusPlus.git
				synced 2025-11-04 02:39:11 +01:00 
			
		
		
		
	add ryfi decoder module
This commit is contained in:
		
							
								
								
									
										88
									
								
								decoder_modules/ryfi_decoder/src/ryfi/packet.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								decoder_modules/ryfi_decoder/src/ryfi/packet.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,88 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
#include <stdint.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;
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user