ToneBufferQueue.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * ToneBufferQueue.h
8  *
9  * @author Sept 2019 mikee47 <mike@sillyhouse.net>
10  *
11  ****/
12 
13 #pragma once
14 
15 #include "ToneBuffer.h"
16 #include <esp_attr.h>
17 
19 {
20 public:
22  {
23  clear();
24  }
25 
26  void insert(ToneBuffer* buf)
27  {
28  buf->next = head;
29  head = buf;
30  }
31 
32  void append(ToneBuffer* buf);
33 
34  void append(ToneBufferQueue& queue)
35  {
36  append(queue.head);
37  queue.head = nullptr;
38  }
39 
40  ToneBuffer* IRAM_ATTR dequeue();
41 
42  ToneBuffer* peek() const
43  {
44  return head;
45  }
46 
47  bool empty() const
48  {
49  return head == nullptr;
50  }
51 
52  void clear()
53  {
54  delete head;
55  head = nullptr;
56  }
57 
58 private:
59  ToneBuffer* head = nullptr;
60 };
Definition: ToneBufferQueue.h:19
void append(ToneBufferQueue &queue)
Definition: ToneBufferQueue.h:34
void clear()
Definition: ToneBufferQueue.h:52
ToneBuffer * dequeue()
void append(ToneBuffer *buf)
ToneBuffer * peek() const
Definition: ToneBufferQueue.h:42
~ToneBufferQueue()
Definition: ToneBufferQueue.h:21
void insert(ToneBuffer *buf)
Definition: ToneBufferQueue.h:26
bool empty() const
Definition: ToneBufferQueue.h:47
Contains samples for one full signal cycle at a specific frequency.
Definition: ToneBuffer.h:24