LRT13  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 "../Config/RobotConfig.h"
11 #include "../Config/Configurable.h"
12 #include "../Process/SynchronizedProcess.h"
13 #include "../Config/ConfigManager.h"
14 #include "../Utils/AsyncPrinter.h"
15 
16 class Pneumatics : public SynchronizedProcess, public Configurable
17 {
18 public:
19  enum State
20  {
21  OFF = false,
22  FORWARD = true,
23  REVERSE = false
24  };
25 
26  // Double solenoid
27  Pneumatics(uint32_t forward, uint32_t reverse, uint8_t module, const char *name);
28  Pneumatics(uint32_t forward, uint32_t reverse, const char *name);
29  // Single solenoid
30  Pneumatics(uint32_t forward, uint8_t module, const char *name);
31  Pneumatics(uint32_t forward, const char *name);
32  virtual ~Pneumatics();
33 
34  static void CreateCompressor();
35  static void DestroyCompressor();
36  static void SetCompressor(bool on);
37 
38  void Set(bool on, bool force = false);
39  bool Get();
40 
41  virtual void Configure();
42 
43  const char* GetName();
44 
45  static vector<Pneumatics*> pneumatic_vector;
46 
47 protected:
48  INT32 Tick();
49 
50 private:
51  void InternalUpdate();
52 
53  std::string m_configSection;
54 
55  int m_pulse_length;
56 
57  static Compressor *m_compressor;
58 
59  SolenoidBase *solenoid;
60  int counter;
61  bool pulsed;
62  State state;
63 
64  const char *m_name;
65 
66  DISALLOW_COPY_AND_ASSIGN(Pneumatics);
67 
68 };
69 
70 #endif