LRT14  1.0
 All Classes Namespaces Functions Variables Enumerations Enumerator
FRCDashboard.h
1 #ifndef FRCDASH_DASHBOARD_H_
2 #define FRCDASH_DASHBOARD_H_
3 
4 #include <WPILib.h>
5 #include <semLib.h>
6 
7 #include <queue>
8 #include <sstream>
9 
10 #include <Rhesus/Toolkit/Tasks/Rhesus.Toolkit.Tasks.h>
11 
12 #include <Rhesus/Messenger/NetServer.h>
13 #include <Rhesus/Messenger/NetBuffer.h>
14 #include <Rhesus/Messenger/NetChannel.h>
15 
16 class FRCDashboard
17 {
18 private:
19  typedef struct
20  {
23  int channel;
24  } DMessage;
25 
26 public:
27  static void Close();
28 
32  static void Tick();
33 
37  static void Flush();
38 
39  static void EnqueueMessage(Rhesus::Messenger::NetBuffer& buff,
40  Rhesus::Messenger::NetChannel::Enum method, int channel);
41 
42 private:
43 
44  static FRCDashboard* instance();
45 
46  static FRCDashboard* m_instance;
47 
48  FRCDashboard();
49  ~FRCDashboard();
50 
51  void tick();
52 
53  void flush();
54 
55  void enqueueMessage(Rhesus::Messenger::NetBuffer& buff,
56  Rhesus::Messenger::NetChannel::Enum method, int channel);
57 
58  Rhesus::Toolkit::Tasks::Mutex m_queueMutex;
59  std::queue<DMessage> m_netBufferQueue;
60 
61  Rhesus::Messenger::NetServer* m_server;
62 };
63 
64 #endif