LRT14  1.0
 All Classes Namespaces Functions Variables Enumerations Enumerator
Pneumatics.h
1 #ifndef PNEUMATICS_H_
2 #define PNEUMATICS_H_
3 
4 #include <WPILib.h>
5 #include <SolenoidBase.h>
6 #include <DoubleSolenoid.h>
7 #include <Solenoid.h>
8 #include <Compressor.h>
9 
10 #include "Actuator.h"
11 
12 #include "../Config/ConfigPortMappings.h"
13 #include "../Config/Configurable.h"
14 #include "../Logging/Loggable.h"
15 #include "../Config/ConfigRuntime.h"
16 #include "../Utils/AsyncPrinter.h"
17 
21 class Pneumatics : public Actuator, public Configurable, public Loggable
22 {
23 public:
24  enum State
25  {
26  OFF,
27  FORWARD,
28  REVERSE
29  };
30 
31  // Double solenoid
32  Pneumatics(uint32_t forward, uint32_t reverse, uint8_t module, const char* name);
33  Pneumatics(uint32_t forward, uint32_t reverse, const char* name);
34  // Single solenoid
35  Pneumatics(uint32_t forward, uint8_t module, const char* name);
36  Pneumatics(uint32_t forward, const char* name);
37  virtual ~Pneumatics();
38 
39  void Output();
40 
41  static void CreateCompressor();
42  static void DestroyCompressor();
43  static void SetCompressor(bool on);
44 
45  void Set(State on, bool force = false);
46  State Get();
47  State GetHardwareValue();
48 
49  void Configure();
50  void Log();
51  void Send();
52 
53  static vector<Pneumatics*> pneumatic_vector;
54 
55 private:
56  std::string m_configSection;
57 
58  int m_pulse_length;
59 
60  static Compressor* m_compressor;
61 
62  SolenoidBase* solenoid;
63  int counter;
64  bool pulsed;
65  State state;
66 
67  DISALLOW_COPY_AND_ASSIGN(Pneumatics);
68 
69 };
70 
71 #endif