Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
xqueue.h File Reference
Definition and prototypes for xqueue data structure. More...
Go to the source code of this file.
Data Structures | |
| struct | xqueue_t |
| xqueue_t structure: queue with arbitrary length. More... | |
Functions | |
| void | xqueue_init (xqueue_t *const queue, uint8_t *const dataBuffer, const size_t size) |
| Initialize a queue. | |
| size_t | xqueue_count (const xqueue_t *const queue) |
| Number of used elements in the queue. | |
| bool | xqueue_empty (const xqueue_t *const queue) |
| Whether or not the queue is empty. | |
| bool | xqueue_full (const xqueue_t *const queue) |
| Whether or not the queue is full. | |
| size_t | xqueue_space (const xqueue_t *const queue) |
| Number of free elements in the queue. | |
| uint8_t | xqueue_front (const xqueue_t *const queue) |
| Front element of the queue. | |
| uint8_t | xqueue_back (const xqueue_t *const queue) |
| Return the back (most recently added) element of the queue. | |
| uint8_t | xqueue_at (const xqueue_t *const queue, const size_t index) |
| Index an element of the queue. | |
| void | xqueue_clear (xqueue_t *const queue) |
| Clears a queue; retains buffer address and maximum size. | |
| uint8_t | xqueue_push (xqueue_t *const queue, const uint8_t value) |
| Push a single element on to a queue. | |
| void | xqueue_push16 (xqueue_t *const queue, const uint16_t value) |
| Push a 16-bit number to the queue (2 elements) | |
| void | xqueue_push32 (xqueue_t *const queue, const uint32_t value) |
| Push a 32-bit number to the queue (4 elements) | |
| void | xqueue_push_buffer (xqueue_t *const queue, const uint8_t *values, const size_t nvalues) |
| Push a stream on to a queue (faster than push_string) | |
| void | xqueue_push_string (xqueue_t *const queue, const unsigned char *str) |
| Push a (null-terminated) string on to a queue. | |
| uint8_t | xqueue_pop (xqueue_t *const queue) |
| Pop an element from a queue. | |
| uint16_t | xqueue_pop16 (xqueue_t *const queue) |
| Pop 16 bits (two elements) from a queue. | |
| uint32_t | xqueue_pop32 (xqueue_t *const queue) |
| Pop 32 bits (four elements) from a queue. | |
| void | xqueue_pop_buffer (xqueue_t *const queue, uint8_t *values, const size_t nvalues) |
| Pop a sequence of elements from a queue. | |
| void | xqueue_drop (xqueue_t *const queue) |
| Pop an element from a queue; do not return value (fast) | |
| void | xqueue_drop_many (xqueue_t *const queue, size_t nvalues) |
| Pop many elements from a queue (fast) | |
| uint8_t | xqueue_checksum (const xqueue_t *const queue, size_t nvalues, const size_t nAdvance) |
| Checksum of n elements currently in the queue. | |
Detailed Description
Definition and prototypes for xqueue data structure.
xqueue is designed for use in communication systems and concurrent environments where two processes may access the queue, though exclusively one will read and one will write. Read and write counts are tracked separately for this reason.
xqueues are initialized with the address of a buffer and its size, which must be a power of two. This is to allow for simple circular access to the buffer via masking, instead using a costly modulo operator.
- Date:
- 2013-12-09 Copyright (C) 2013, Jeff C. Jensen, Edward A. Lee, and Sanjit A. Seshia. This software accompanies An Introductory Lab in Embedded and Cyber-Physical Systems and is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. See http://leeseshia.org/lab.
Definition in file xqueue.h.
Function Documentation
| uint8_t xqueue_at | ( | const xqueue_t *const | queue, |
| const size_t | index | ||
| ) |
Index an element of the queue.
- Returns:
- Indexed element of the queue
- Parameters:
-
[in] queue Target queue [in] index Element index
Definition at line 41 of file xqueue.cpp.
| uint8_t xqueue_back | ( | const xqueue_t *const | queue ) |
Return the back (most recently added) element of the queue.
- Returns:
- Back element of the queue
- Parameters:
-
[in] queue Target queue
Definition at line 37 of file xqueue.cpp.
| uint8_t xqueue_checksum | ( | const xqueue_t *const | queue, |
| size_t | nvalues, | ||
| const size_t | nAdvance | ||
| ) |
Checksum of n elements currently in the queue.
- Returns:
- 8-bit checksum of n front elements of the queue, queue[fromCount] to queue[fromCount + nvalues]
- Parameters:
-
[in] queue Target queue [in] nvalues Number of values over which to sum [in] nAdvance Number of elements to advance before calculating checksum
Definition at line 135 of file xqueue.cpp.
| void xqueue_clear | ( | xqueue_t *const | queue ) |
Clears a queue; retains buffer address and maximum size.
- Parameters:
-
[in,out] queue Target queue
Definition at line 45 of file xqueue.cpp.
| size_t xqueue_count | ( | const xqueue_t *const | queue ) |
Number of used elements in the queue.
- Returns:
- number of elements in the queue
- Parameters:
-
[in] queue Target queue
Definition at line 17 of file xqueue.cpp.
| void xqueue_drop | ( | xqueue_t *const | queue ) |
Pop an element from a queue; do not return value (fast)
- Parameters:
-
[in,out] queue Target queue
Definition at line 123 of file xqueue.cpp.
| void xqueue_drop_many | ( | xqueue_t *const | queue, |
| size_t | nvalues | ||
| ) |
Pop many elements from a queue (fast)
- Parameters:
-
[in,out] queue Target queue [in] nvalues Number of elements to pop
Definition at line 128 of file xqueue.cpp.
| bool xqueue_empty | ( | const xqueue_t *const | queue ) |
Whether or not the queue is empty.
- Returns:
- Queue is empty?
- Parameters:
-
[in] queue Target queue
Definition at line 21 of file xqueue.cpp.
| uint8_t xqueue_front | ( | const xqueue_t *const | queue ) |
Front element of the queue.
- Returns:
- Front element of the queue
- Parameters:
-
[in] queue Target queue
Definition at line 33 of file xqueue.cpp.
| bool xqueue_full | ( | const xqueue_t *const | queue ) |
Whether or not the queue is full.
- Returns:
- Queue is full?
- Parameters:
-
[in] queue Target queue
Definition at line 25 of file xqueue.cpp.
| void xqueue_init | ( | xqueue_t *const | queue, |
| uint8_t *const | dataBuffer, | ||
| const size_t | size | ||
| ) |
Initialize a queue.
- Parameters:
-
[out] queue Queue struct to initialize [out] dataBuffer Raw buffer to which queue will attach [in] size Size of the raw buffer
Definition at line 7 of file xqueue.cpp.
| uint8_t xqueue_pop | ( | xqueue_t *const | queue ) |
Pop an element from a queue.
- Returns:
- Front (removed) element of the queue
- Parameters:
-
[in,out] queue Target queue
Definition at line 99 of file xqueue.cpp.
| uint16_t xqueue_pop16 | ( | xqueue_t *const | queue ) |
Pop 16 bits (two elements) from a queue.
- Returns:
- Packed 16-bit integer containing front two (removed) elements of the queue.
- Parameters:
-
[in,out] queue Target queue
Definition at line 106 of file xqueue.cpp.
| uint32_t xqueue_pop32 | ( | xqueue_t *const | queue ) |
Pop 32 bits (four elements) from a queue.
- Returns:
- Packed 32-bit integer containing front four (removed) elements of the queue.
- Parameters:
-
[in,out] queue Target queue
Definition at line 110 of file xqueue.cpp.
| void xqueue_pop_buffer | ( | xqueue_t *const | queue, |
| uint8_t * | values, | ||
| const size_t | nvalues | ||
| ) |
Pop a sequence of elements from a queue.
- Parameters:
-
[in,out] queue Target queue [out] values Stream to fill with values [in] nvalues Number of elements to pop
Definition at line 114 of file xqueue.cpp.
| uint8_t xqueue_push | ( | xqueue_t *const | queue, |
| const uint8_t | value | ||
| ) |
Push a single element on to a queue.
- Returns:
- Value pushed
- Parameters:
-
[in,out] queue Target queue [in] value byte to add to queue
Definition at line 52 of file xqueue.cpp.
| void xqueue_push16 | ( | xqueue_t *const | queue, |
| const uint16_t | value | ||
| ) |
Push a 16-bit number to the queue (2 elements)
- Parameters:
-
[in,out] queue Target queue [in] value Element to push
Definition at line 62 of file xqueue.cpp.
| void xqueue_push32 | ( | xqueue_t *const | queue, |
| const uint32_t | value | ||
| ) |
Push a 32-bit number to the queue (4 elements)
- Parameters:
-
[in,out] queue Target queue [in] value Element to push
Definition at line 67 of file xqueue.cpp.
| void xqueue_push_buffer | ( | xqueue_t *const | queue, |
| const uint8_t * | values, | ||
| const size_t | nvalues | ||
| ) |
Push a stream on to a queue (faster than push_string)
- Parameters:
-
[in,out] queue Target queue [in] values Stream to push to queue [in] nvalues Number of elements to push
Definition at line 74 of file xqueue.cpp.
| void xqueue_push_string | ( | xqueue_t *const | queue, |
| const unsigned char * | str | ||
| ) |
Push a (null-terminated) string on to a queue.
- Parameters:
-
[in,out] queue Target queue [in] str String to push to queue (NULL element is not pushed)
Definition at line 88 of file xqueue.cpp.
| size_t xqueue_space | ( | const xqueue_t *const | queue ) |
Number of free elements in the queue.
- Returns:
- number of free elements in the queue
- Parameters:
-
[in] queue Target queue
Definition at line 29 of file xqueue.cpp.
Generated on Wed Jul 13 2022 12:36:28 by
1.7.2