CARMA C++
DriveControlImpl.h
Go to the documentation of this file.
1 
12 #ifndef CARMA_ANTENNA_BIMA_DRIVECONTROL_H
13 #define CARMA_ANTENNA_BIMA_DRIVECONTROL_H
14 
15 #include "carma/antenna/bima/control/bimaDriveControl.h"
16 #include "carma/corba/corba.h"
17 #include "carma/util/IPQwriter.h"
18 
19 #include <string>
20 
21 namespace log4cpp {
22  class Category;
23 }
24 
25 namespace carma
26 {
27  namespace antenna
28  {
29  namespace bima
30  {
31 
32  // Forward declarations
33  class DriveCommand;
34  class SharedMemory;
35 
40  {
41  public:
42 
46  DriveControlImpl( std::string antenna,
47  bool emulate );
48 
53 
58  CORBA::ULong seq);
59 
63  void stop();
64 
68  void trackSnow();
69 
73  void trackWind();
74 
79  void setMaxRate( float azRate, float elRate );
80 
81  void setTolerance( float arcsec );
82 
84  aperature);
85 
86  void setTiltmeterZero(float aftForward, float leftRight);
87 
88  void setAperturePointingConstants(
90  float azOffset, float elOffset, float sag);
91 
98  void setAzMaxRate( float azRate);
99 
105  void setElMaxRate( float elRate);
106 
107 
111  void setEncoderLimits(long azMin, long azMax,
112  long elMin, long elMax);
113 
117  void setEncoderCountsPerTurn(long az, long el);
118 
122  void setAntLocation(double longitude, double latitude,
123  double altitude);
124 
125  private:
126 
131  void setNextSequenceNo( CORBA::ULong seq );
132 
133  public:
134 
138  void setAzel(double az, double el, CORBA::ULong seq);
139 
143  void setAz(double az, CORBA::ULong seq);
144 
145  private:
146 
147  void setAz(double az);
148 
149  public:
150 
154  void setEl(double el, CORBA::ULong seq);
155 
156  private:
157 
158  void setEl(double el);
159 
160  public:
161 
165  void setSlewRate(unsigned long axes,
166  long azRate, long elRate);
167 
171  void track(
172  const char* source,
173  const ::carma::antenna::common::DriveControl::RaDecTriplet & positionTriplet,
175  CORBA::Boolean overTheTop,
176  CORBA::ULong seq);
177 
181  void updateRaDec(
182  const ::carma::antenna::common::DriveControl::RaDecEpoch & position,
184 
185  void updateWeather(float ambientTemp, float barometricPressure,
186  float relativeHumidity, float dewpoint,
187  float windSpeed, float windDirection);
188 
189  void setMountOffset(double az, double el, CORBA::ULong seq);
190 
191  void setAzMountOffset(double az, CORBA::ULong seq);
192 
193  void setElMountOffset(double el, CORBA::ULong seq);
194 
195  private:
196 
197  void setAzMountOffset( double az );
198 
199  void setElMountOffset( double el );
200 
201  public:
202 
203  void setOffset(double az, double el, CORBA::ULong seq);
204 
211  void setAzOffset( double az, CORBA::ULong seq );
212 
218  void setElOffset(double el, CORBA::ULong seq);
219 
220  private:
221 
222  void setAzOffset( double az );
223 
224  void setElOffset(double el );
225 
226  public:
227 
228  void setPointingModelCoefs(
229  const ::carma::antenna::bima::control::DriveControl::sequence_double& dazCoefs,
230  const ::carma::antenna::bima::control::DriveControl::sequence_double& delCoefs);
231 
232  void setSafeRange( float azLow, float azHigh,
233  float elLow, float elHigh);
234 
235  private:
236  static const std::string className_;
237  log4cpp::Category &log_;
238  bool emulate_;
239  bool _safeCalled;
240  std::string antenna_;
241  carma::antenna::bima::SharedMemory *bimaShm_;
243 
244 
245 
246  }; // End class DriveControlImpl
247 
248  } // End namespace bima
249  } // End namespace antenna
250 } // End namespace carma
251 
252 #endif // CARMA_ANTENNA_BIMA_DRIVECONTROL_H
void setAntLocation(double longitude, double latitude, double altitude)
Set the antenna location (absolute)
Implementation class for DriveControl idl.
void setElMaxRate(float elRate)
Sets the maximum elevation drive rate that can be requested.
void setMaxRate(float azRate, float elRate)
Set maximum drive rate that can be requested by the drive sytem software.
void setAzel(double az, double el, CORBA::ULong seq)
Go to requested Az/El.
void setSlewRate(unsigned long axes, long azRate, long elRate)
Set the slew rate.
void setEncoderLimits(long azMin, long azMax, long elMin, long elMax)
Set encoder limits.
void trackWind()
Minimize antenna profile to heavy wind.
void stow(carma::antenna::common::DriveControl::Position position, CORBA::ULong seq)
Stow antenna.
void setAzMaxRate(float azRate)
Sets the maximum azimuth drive rate that can be requested.
void setAz(double az, CORBA::ULong seq)
Go to requested Az.
Aperture
Enumerate apertures to use for selecting pointing models.
void updateRaDec(const ::carma::antenna::common::DriveControl::RaDecEpoch &position, carma::antenna::common::DriveControl::AzWrapMode azWrapMode)
Update ra and dec epoch for a source we are already tracking.
void setElOffset(double el, CORBA::ULong seq)
El astronomical offsets.
AzWrapMode
The azimuth drive can operate over more than a full circle, and the wrap logic dictates how the ambig...
void setEl(double el, CORBA::ULong seq)
Go to requested El.
void setAzOffset(double az, CORBA::ULong seq)
Az astronomical offsets.
void track(const char *source, const ::carma::antenna::common::DriveControl::RaDecTriplet &positionTriplet, carma::antenna::common::DriveControl::AzWrapMode azWrapMode, CORBA::Boolean overTheTop, CORBA::ULong seq)
Set RA/Dec with a source name for tracking.
void setEncoderCountsPerTurn(long az, long el)
Set Encoder counts per 1 revolution.
DriveControlImpl(std::string antenna, bool emulate)
Constructor.
Position
Enumerate valid fixed positions for Stow.
void trackSnow()
Track sun to melt snow on antenna.