Now you can download a copy of these docs so you can use them offline! Download now
Compressor.cpp
1 /*----------------------------------------------------------------------------*/
2 /* Copyright (c) FIRST 2008. All Rights Reserved. */
3 /* Open Source Software - may be modified and shared by FRC teams. The code */
4 /* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */
5 /*----------------------------------------------------------------------------*/
6 
7 #include "Compressor.h"
8 #include "DigitalInput.h"
9 #include "NetworkCommunication/UsageReporting.h"
10 #include "Timer.h"
11 #include "WPIErrors.h"
12 
21 static void CompressorChecker(Compressor *c)
22 {
23  while (1)
24  {
25  if (c->Enabled())
26  {
27  c->SetRelayValue( c->GetPressureSwitchValue() == 0 ? Relay::kOn : Relay::kOff );
28  }
29  else
30  {
31  c->SetRelayValue(Relay::kOff);
32  }
33  Wait(0.5);
34  }
35 }
36 
45 void Compressor::InitCompressor(uint8_t pressureSwitchModuleNumber,
46  uint32_t pressureSwitchChannel,
47  uint8_t compresssorRelayModuleNumber,
48  uint32_t compressorRelayChannel)
49 {
50  m_table = NULL;
51  m_enabled = false;
52  m_pressureSwitch = new DigitalInput(pressureSwitchModuleNumber, pressureSwitchChannel);
53  m_relay = new Relay(compresssorRelayModuleNumber, compressorRelayChannel, Relay::kForwardOnly);
54 
55  nUsageReporting::report(nUsageReporting::kResourceType_Compressor, 0);
56 
57  if (!m_task.Start((int32_t)this))
58  {
59  wpi_setWPIError(CompressorTaskError);
60  }
61 }
62 
74 Compressor::Compressor(uint8_t pressureSwitchModuleNumber,
75  uint32_t pressureSwitchChannel,
76  uint8_t compresssorRelayModuleNumber,
77  uint32_t compressorRelayChannel)
78  : m_task ("Compressor", (FUNCPTR)CompressorChecker)
79 {
80  InitCompressor(pressureSwitchModuleNumber,
81  pressureSwitchChannel,
82  compresssorRelayModuleNumber,
83  compressorRelayChannel);
84 }
85 
96 Compressor::Compressor(uint32_t pressureSwitchChannel, uint32_t compressorRelayChannel)
97  : m_task ("Compressor", (FUNCPTR)CompressorChecker)
98 {
99  InitCompressor(GetDefaultDigitalModule(),
100  pressureSwitchChannel,
101  GetDefaultDigitalModule(),
102  compressorRelayChannel);
103 }
104 
111 {
112  delete m_pressureSwitch;
113  delete m_relay;
114 }
115 
121 void Compressor::SetRelayValue(Relay::Value relayValue)
122 {
123  m_relay->Set(relayValue);
124 }
125 
133 {
134  return m_pressureSwitch->Get();
135 }
136 
143 {
144  m_enabled = true;
145 }
146 
152 {
153  m_enabled = false;
154 }
155 
164 {
165  return m_enabled;
166 }
167 
169  if (m_table != NULL) {
170  m_table->PutBoolean("Enabled", m_enabled);
171  m_table->PutBoolean("Pressure switch", GetPressureSwitchValue());
172  }
173 }
174 
176 
177 }
178 
180 
181 }
182 
184  return "Compressor";
185 }
186 
187 void Compressor::InitTable(ITable *subTable) {
188  m_table = subTable;
189  UpdateTable();
190 }
191 
193  return m_table;
194 }
195 
bool Start(uint32_t arg0=0, uint32_t arg1=0, uint32_t arg2=0, uint32_t arg3=0, uint32_t arg4=0, uint32_t arg5=0, uint32_t arg6=0, uint32_t arg7=0, uint32_t arg8=0, uint32_t arg9=0)
Definition: Task.cpp:52
std::string GetSmartDashboardType()
Definition: Compressor.cpp:183
ITable * GetTable()
Definition: Compressor.cpp:192
void SetRelayValue(Relay::Value relayValue)
Definition: Compressor.cpp:121
Definition: ITable.h:26
void StopLiveWindowMode()
Definition: Compressor.cpp:179
void StartLiveWindowMode()
Definition: Compressor.cpp:175
virtual void PutBoolean(std::string key, bool value)=0
void UpdateTable()
Definition: Compressor.cpp:168
Definition: Relay.h:26
void Stop()
Definition: Compressor.cpp:151
void InitTable(ITable *subTable)
Definition: Compressor.cpp:187
void Set(Value value)
Definition: Relay.cpp:131
bool Enabled()
Definition: Compressor.cpp:163
void Start()
Definition: Compressor.cpp:142
uint32_t GetPressureSwitchValue()
Definition: Compressor.cpp:132
Compressor(uint32_t pressureSwitchChannel, uint32_t compressorRelayChannel)
Definition: Compressor.cpp:96

Generated on Sat Apr 26 2014 12:26:45 for WPILibC++ by doxygen 1.8.6