Pico-Arduino
PicoMulticoreFifo.h
1 #pragma once
2 
3 #include "pico/stdlib.h"
4 #include "pico/multicore.h"
5 
6 namespace pico_arduino {
7 
16  public:
22  }
23 
24  ~MuliticoreFifo(){
25  clear();
26  }
27 
29  bool push(uint32_t data,bool is_blocking=true){
30  bool result = true;
31  if (!is_blocking){
32  result = multicore_fifo_wready();
33  }
34  if (result){
35  multicore_fifo_push_blocking(data);
36  }
37  return result;
38  }
39 
41  bool pop(uint32_t &data, bool is_blocking=true){
42  bool result = true;
43  if (!is_blocking){
44  result = !isEmpty();
45  }
46  if (result){
47  data = multicore_fifo_pop_blocking();
48  }
49  return result;
50  }
51 
53  bool isEmpty() {
54  return !multicore_fifo_rvalid();
55  }
56 
58  bool isFull() {
59  return !multicore_fifo_wready();
60  }
61 
63  void clear(){
64  multicore_fifo_drain();
65  }
66 };
67 
68 }
The RP2040 contains two FIFOs for passing data, messages or ordered events between the two cores....
Definition: PicoMulticoreFifo.h:15
void clear()
Removes all entries.
Definition: PicoMulticoreFifo.h:63
bool isFull()
Checks if the fifo is full.
Definition: PicoMulticoreFifo.h:58
bool pop(uint32_t &data, bool is_blocking=true)
Retrieves the next element (from the front) and removes it from the collection.
Definition: PicoMulticoreFifo.h:41
bool isEmpty()
Checks if the fifo is empty.
Definition: PicoMulticoreFifo.h:53
MuliticoreFifo()
Construct a new Muliticore Fifo object.
Definition: PicoMulticoreFifo.h:21
bool push(uint32_t data, bool is_blocking=true)
Adds an elelment to the end.
Definition: PicoMulticoreFifo.h:29
Pico Arduino Framework.
Definition: Arduino.cpp:26