LRT13  1.0
 All Classes Namespaces Functions Variables Enumerations Enumerator
SmarterDashboard.h
1 #ifndef SMARTERDASHBOARD_H_
2 #define SMARTERDASHBOARD_H_
3 
4 #include <WPILib.h>
5 #include <semLib.h>
6 
7 #include <queue>
8 #include <sstream>
9 
10 #include "../Network/NetServer.h"
11 #include "../Network/NetBuffer.h"
12 #include "../Network/NetChannel.h"
13 #include "../Network/MessageType.h"
14 
15 typedef struct
16 {
17  NetBuffer* nb;
18  NetChannel::Enum method;
19  int channel;
20 } SD_Message;
21 
22 namespace TelemetryType
23 {
24  enum Enum
25  {
26  BEGIN = 0,
27  CLIMBER_STATE = 0,
28  CLIMBER_WINCH_PAWL_CURRENT = 1,
29  CLIMBER_WINCH_PAWL_OUTPUT_DUTY_CYCLE = 2,
30  CLIMBER_WINCH_PAWL_TIMED_OUT = 3,
31  END = 4,
32  };
33 }
34 
35 class SmarterDashboard
36 {
37 public:
38  static SmarterDashboard* Instance();
39  static void Start();
40  static void Close();
41 
42  SmarterDashboard();
43  ~SmarterDashboard();
44 
45  void Tick();
46  void Flush();
47 
48  template <class T> void SetTelemetryData(TelemetryType::Enum type, T data);
49 
50  void EnqueueMessage(NetBuffer* buff, NetChannel::Enum method, int channel);
51 
52  void EnqueueShooterMessage(MessageType::Enum header, float time, float value);
53 
54 private:
55  static SmarterDashboard* m_instance;
56 
57  string m_telemetryData[TelemetryType::END - TelemetryType::BEGIN];
58  string m_telemetryTypeNames[TelemetryType::END - TelemetryType::BEGIN];
59 
60  SEM_ID m_queueSem;
61  queue<SD_Message> m_netBufferQueue;
62 
63  NetServer* m_server;
64 };
65 
66 #endif