DYT/Tool/matlab/include/uav/mavlink/mavlinkcodegen/mavlinkcodegen_CircularQueue.hpp

70 lines
1.5 KiB
C++
Raw Permalink Normal View History

2024-11-22 15:19:31 +00:00
/* Copyright 2020 The MathWorks, Inc. */
/**
* @file mavlinkcodegen_CircularQueue.hpp
* @brief Header for Circular Queue class.
*/
#ifndef MAVLINKCODEGEN_CIRCULARQUEUE_HPP
#define MAVLINKCODEGEN_CIRCULARQUEUE_HPP
#include "mavlink/mavlink_types.h" // for mavlink_message_t
#include <stddef.h> // for size_t
namespace uavlib {
///
/**
* CircularQueue implementation of Circular Queue to store MAVLink messages
*/
class CircularQueue {
private:
/// Pointer to Queue Front
int front;
/// Pointer to Queue Rear
int rear;
/// Maximum size of Queue
int maxSize;
/// Placeholder for Circular queue
mavlink_message_t* queue;
public:
/// Create the Circular Queue with no memory allocated
CircularQueue();
/// Create the Circular Queue with requested size
CircularQueue(uint16_t queueSize);
~CircularQueue();
/// check if Queue is empty
/**
* @return boolean value indicating whether Queue is empty
*/
bool isQueueEmpty() const;
/// check if Queue is full
/**
* @return boolean value indicating whether Queue is full
*/
bool isQueueFull() const;
/// Remove the Front element from Queue
/**
* @return The MAVLink message stored at Queue Front
*/
mavlink_message_t deQueue();
/// Add element to Rear of Queue
/**
* @param[in] msg MAVLink message to be added to Queue
*/
void enQueue(mavlink_message_t msg);
};
} // namespace uavlib
#endif // !MAVLINKCODEGEN_CIRCULARQUEUE_HPP