All Projects → SMFSW → Queue

SMFSW / Queue

Licence: BSD-3-Clause license
Queue handling library (designed on Arduino)

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to Queue

jrsmq
A lightweight message queue for Java that requires no dedicated queue server. Just a Redis server.
Stars: ✭ 28 (-61.64%)
Mutual labels:  queue, fifo
Circular Buffer
Circular Buffer/ Circular Array
Stars: ✭ 16 (-78.08%)
Mutual labels:  fifo, lifo
Rsmq
Redis Simple Message Queue
Stars: ✭ 1,556 (+2031.51%)
Mutual labels:  queue, fifo
hatrack
Fast, multi-reader, multi-writer, lockless data structures for parallel programming
Stars: ✭ 55 (-24.66%)
Mutual labels:  queue, fifo
js-data-structures
🌿 Data structures for JavaScript
Stars: ✭ 56 (-23.29%)
Mutual labels:  fifo, lifo
Adafruit SSD1305
OLEDs with SSD1305
Stars: ✭ 20 (-72.6%)
Mutual labels:  arduino-library
queue
A task queue library for Go.
Stars: ✭ 26 (-64.38%)
Mutual labels:  queue
Arduino-DCF77
Efficient and complete DCF77 library for Arduino
Stars: ✭ 25 (-65.75%)
Mutual labels:  arduino-library
ublox
Arduino and CMake library for communicating with uBlox GPS receivers.
Stars: ✭ 89 (+21.92%)
Mutual labels:  arduino-library
TLE5012-Magnetic-Angle-Sensor
This repository includes an library for Arduino for the TLE5012 Magnetic Angle Sensor with SSC interface.
Stars: ✭ 37 (-49.32%)
Mutual labels:  arduino-library
orkid-node
Reliable and modern Redis Streams based task queue for Node.js 🤖
Stars: ✭ 61 (-16.44%)
Mutual labels:  queue
CS5490
Arduino / ESP Library for Communication with the Cirrus Logic CS5490 Chip
Stars: ✭ 17 (-76.71%)
Mutual labels:  arduino-library
aioScrapy
基于asyncio与aiohttp的异步协程爬虫框架 欢迎Star
Stars: ✭ 34 (-53.42%)
Mutual labels:  queue
collections
📂 Golang 实现的 collections 模块,灵感来自 Python queue 和 Python collections
Stars: ✭ 27 (-63.01%)
Mutual labels:  queue
Tieba-Birthday-Spider
百度贴吧生日爬虫,可抓取贴吧内吧友生日,并且在对应日期自动发送祝福
Stars: ✭ 28 (-61.64%)
Mutual labels:  queue
beems
a bee-queue based minimalist toolkit for building fast, decentralized, scalable and fault tolerant microservices
Stars: ✭ 33 (-54.79%)
Mutual labels:  queue
NvTx
Transactional non volatile storage for Arduino
Stars: ✭ 17 (-76.71%)
Mutual labels:  arduino-library
arduino-primo-tutorials
Here some tutorials to explain and show how to make use of the new features of the Arduino Primo and Arduino Primo Core, such as Wifi, BLE, NFC, InfraRed and various sensors. Hope you can find this helpful to create amazing stuff, save the planet or make a cool project to look smart at the dinning table with your uncles.
Stars: ✭ 12 (-83.56%)
Mutual labels:  arduino-library
Libft
42 library of basic C functions - queues, lists, memory operations and more 😄
Stars: ✭ 21 (-71.23%)
Mutual labels:  queue
MPU6050 light
Lightweight, fast and simple library to communicate with the MPU6050
Stars: ✭ 73 (+0%)
Mutual labels:  arduino-library

Queue Build Status

Queue handling library (designed on Arduino)

This library was designed for Arduino, yet may be compiled without change with gcc for other purposes/targets

Queue class has since start been called Queue. Unfortunately, on some platforms or when using FreeRTOS, Queue is already declared. For compatibility purposes, Queue class has been renamed to cppQueue. Sorry for the inconvenience...

Usage

  • Declare a cppQueue instance (uint16_t size_rec, uint16_t nb_recs=20, QueueType type=FIFO, overwrite=false) (called q below):
    • size_rec - size of a record in the queue
    • nb_recs - number of records in the queue
    • type - Queue implementation type: FIFO, LIFO
    • overwrite - Overwrite previous records when queue is full if set to true
  • Push stuff to the queue using q.push(void * rec)
    • returns true if successfully pushed into queue
    • returns false is queue is full
  • Pop stuff from the queue using q.pop(void * rec) or q.pull(void * rec)
    • returns true if successfully popped from queue
    • returns false if queue is empty
  • Peek stuff from the queue using q.peek(void * rec)
    • returns true if successfully peeked from queue
    • returns false if queue is empty
  • Drop stuff from the queue using q.drop(void)
    • returns true if successfully dropped from queue
    • returns false if queue is empty
  • Peek stuff at index from the queue using q.peekIdx(void * rec, uint16_t idx)
    • returns true if successfully peeked from queue
    • returns false if index is out of range
    • warning: no associated drop function, not to use with q.drop
  • Peek latest stored from the queue using q.peekPrevious(void * rec)
    • returns true if successfully peeked from queue
    • returns false if queue is empty
    • warning: no associated drop function, not to use with q.drop
    • note: only useful with FIFO implementation, use q.peek instead with a LIFO
  • Other methods:
    • q.isInitialized(): true if initialized properly, false otherwise
    • q.isEmpty(): true if empty, false otherwise
    • q.isFull(): true if full, false otherwise
    • q.sizeOf(): queue size in bytes (returns 0 in case queue allocation failed)
    • q.getCount() or q.nbRecs(): number of records stored in the queue
    • q.getRemainingCount(): number of records left in the queue
    • q.clean() or q.flush(): remove all items in the queue

Notes

  • Interrupt safe automation is not implemented in the library. You have to manually disable/enable interrupts where required. No implementation will be made as it would be an issue when using peek/drop methods with LIFO implementation: if an item is put to the queue through interrupt between peek and drop calls, the drop call would drop the wrong (newer) item. In this particular case, dropping decision must be made before re-enabling interrupts.

Examples included

Documentation

Doxygen doc can be generated using "Doxyfile".

See generated documentation

Release Notes

See release notes

See also

cQueue - C implementation of this library

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].