Pico-Arduino
PicoMulticoreFifo.h
1 #pragma once
2 
3 #include "pico/stdlib.h"
4 #include "pico/multicore.h"
5 
14  public:
16  }
17 
18  ~MuliticoreFifo(){
19  clear();
20  }
21 
22  bool push(uint32_t data,bool is_blocking=true){
23  bool result = true;
24  if (!is_blocking){
25  result = multicore_fifo_wready();
26  }
27  if (result){
28  multicore_fifo_push_blocking(data);
29  }
30  return result;
31  }
32 
33  bool pop(uint32_t &data, bool is_blocking=true){
34  bool result = true;
35  if (!is_blocking){
36  result = !isEmpty();
37  }
38  if (result){
39  data = multicore_fifo_pop_blocking();
40  }
41  return result;
42  }
43 
44  bool isEmpty() {
45  return !multicore_fifo_rvalid();
46  }
47 
48  bool isFull() {
49  return !multicore_fifo_wready();
50  }
51 
52  void clear(){
53  multicore_fifo_drain();
54  }
55 };
The RP2040 contains two FIFOs for passing data, messages or ordered events between the two cores....
Definition: PicoMulticoreFifo.h:13