Please, help us to better know about our user community by answering the following short survey: https://forms.gle/wpyrxWi18ox9Z5ae9
scGPMessagefifo.h
Go to the documentation of this file.
1 
5  /* @author János Végh (jvegh)
6  * @bug No known bugs.
7  */
8 
9 #ifndef scGPMessagefifo_h
10 #define scGPMessagefifo_h
11 
12 //#include <systemc>
13 //#include "BasicConfig.h"
14 //#include "scIGPfifo.h"
15 using namespace std;
16 using namespace sc_core;
17 using namespace sc_dt;
18 class scIGPMessage;
19 
20 class scGPMessagefifowrite_if : virtual public sc_interface
21 {
22  public:
23  virtual void write(scIGPMessage*) = 0;
24  virtual void reset() = 0;
25 };
26 
27 class scGPMessagefiforead_if : virtual public sc_interface
28 {
29  public:
30  virtual void read(scIGPMessage*&) = 0;
31  virtual int num_available() = 0;
32 };
33 
43 class scGPMessagefifo : public sc_channel, public scGPMessagefifowrite_if, public scGPMessagefiforead_if
44 {
45 // friend class scGridPoint;
46  friend class scIGPMessage_if;
47  public:
48  scGPMessagefifo(sc_module_name name) : sc_channel(name), num_elements(0), first(0) {}
49 
50  void write(scIGPMessage* c) {
51  if (num_elements == max)
52  wait(scGPMessagefifo_read_event);
53 
54  data[(first + num_elements) % max] = c;
55  ++ num_elements;
56  scGPMessagefifo_write_event.notify();
57  }
58 
59  void read(scIGPMessage* &c){
60  if (num_elements == 0)
61  wait(scGPMessagefifo_write_event);
62 
63  c = data[first];
64  -- num_elements;
65  first = (first + 1) % max;
66  scGPMessagefifo_read_event.notify();
67  }
68 
69  void reset() { num_elements = first = 0; }
70 
71  int num_available() { return num_elements;}
72 
73  private:
74  enum e { max = 10 };
75  scIGPMessage* data[max];
76  uint16_t num_elements, first;
77  sc_event scGPMessagefifo_write_event, scGPMessagefifo_read_event;
78 };
79 
80 #endif //scGPMessagefifo_h
scGPMessagefifo
Definition: scGPMessagefifo.h:43
scIGPMessage
The scIGPMessage class.
Definition: scIGPMessage.h:97
scIGPMessage_if
This class communication interface for scIGPMessage communication for the autonous communication func...
Definition: scIGPMessage_if.h:109