My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
TrackerBoard.h
Go to the documentation of this file.
1 #ifndef TRACKERBOARD_H
2 #define TRACKERBOARD_H
3 
11 #include "gcp/control/code/unix/libunix_src/specific/specificregs.h"
12 
13 #include "gcp/antenna/control/specific/Board.h"
14 #include "gcp/antenna/control/specific/SpecificShare.h"
15 
16 #include "gcp/util/common/TimeVal.h"
17 #include "gcp/util/common/RegDate.h"
18 
19 #define NEW_SCAN
20 
21 namespace gcp {
22  namespace antenna {
23  namespace control {
24 
25  class Atmosphere;
26  class AxisPositions;
27  class Model;
28  class PmacTarget;
29  class Pointing;
30  class Position;
31  class Site;
32  class Scan;
33  class TrackerOffset;
34 
40  class TrackerBoard : public Board {
41 
42  public:
43 
49  TrackerBoard(SpecificShare* share, char* name);
50 
54  inline bool isNewFrame() {
55  return (positionIndex_ == 0);
56  }
57 
63  void archivePosition(AxisPositions *current,
64  Position* commanded);
65 
66  /*.......................................................................
67  * Record the latest pointing parameters for archival.
68  */
69  void archivePointing(unsigned* archived_ptr,
70  Atmosphere* atmosphere,
71  Model* model,
72  PmacTarget* pmac,
73  Pointing* pointing,
74  Site* site,
75  TrackerOffset* offset,
76  Scan* scan);
77 
78  void archivePointing(unsigned* archived_ptr,
79  Atmosphere* atmosphere,
80  Model* model,
81  PmacTarget* pmac,
82  Pointing* pointing,
83  Site* site,
84  TrackerOffset* offset,
85  Scan* scan,
86  bool servoBusy);
87 
91  void archiveStatus(unsigned state, unsigned offSoruce, unsigned lacking);
92 
96  unsigned char trackerStateToBit(int state);
97 
98  private:
99 
100  // Increment the position counter
101 
102  unsigned int incrementPosition();
103 
104  // Pack the LST for archival into the register database
105 
106  void packLst(unsigned* u_elements, double lst);
107 
108  // Pack the Ut1Utc
109 
110  void packUt1Utc(signed* s_elements, double ut1utc);
111 
112  // Pack the equation of the equinoxes.
113 
114  void packEqnEqx(signed* s_elements, double eqneqx);
115 
116  // We store SAMPLES_PER_FRAME samples in each data frame This
117  // is the telescope position index of the current sample *
118  // which is multiplied by SAMPLES_PER_POSITION to get the
119  // sample index
120 
121  unsigned int positionIndex_;
122 
123  //------------------------------------------------------------
124  // Block definitions
125  //------------------------------------------------------------
126 
132  SpecificShare::Block* lacking_;
133 
134  SpecificShare::Block* offSource_;
135 
136  RegMapBlock* servoBusy_;
137 
141  SpecificShare::Block* lst_;
142 
146  SpecificShare::Block* ut1utc_;
147 
152  SpecificShare::Block* eqneqx_;
153 
157  SpecificShare::Block* encoder_off_;
158 
162  SpecificShare::Block* encoder_mul_;
163 
167  SpecificShare::Block* az_limits_;
168 
172  SpecificShare::Block* el_limits_;
173 
177  SpecificShare::Block* tilts_;
178 
182  SpecificShare::Block* flexure_;
183 
187  SpecificShare::Block* axis_;
188 
192  SpecificShare::Block* ptel_;
193 
197  SpecificShare::Block* fixedCollimation_;
198 
202  SpecificShare::Block* siteActual_;
203 
207  SpecificShare::Block* siteFiducial_;
208 
212  SpecificShare::Block* location_;
213 
214  SpecificShare::Block* time_diff_;
215 
216  //------------------------------------------------------------
217  // Fast registers
218  //------------------------------------------------------------
219 
223  SpecificShare::Block* utc_;
224 
229  SpecificShare::Block* tick_utc_;
230 
235  SpecificShare::Block* tick_nanoseconds_;
236 
240  SpecificShare::Block* mode_;
241 
245  SpecificShare::Block* refraction_;
246 
250  SpecificShare::Block* source_;
251 
252  /*
253  * Scan monitor points
254  */
255  SpecificShare::Block* scanName_;
256 
257  SpecificShare::Block* scanOff_;
258 
259  SpecificShare::Block* scanFlag_;
260 
261  SpecificShare::Block* scanInd_;
262 
263  SpecificShare::Block* scanState_;
264 
265  SpecificShare::Block* scanRep_;
266 
270  SpecificShare::Block* equat_geoc_;
271 
275  SpecificShare::Block* equat_off_;
276 
280  SpecificShare::Block* horiz_geoc_;
281 
285  SpecificShare::Block* horiz_topo_;
286 
290  SpecificShare::Block* horiz_mount_;
291 
295  SpecificShare::Block* horiz_off_;
296 
300  SpecificShare::Block* sky_xy_off_;
301 
305  SpecificShare::Block* expectedRates_;
306 
310  SpecificShare::Block* actualRates_;
311 
315  SpecificShare::Block* actual_;
316 
320  SpecificShare::Block* motor_current_;
321 
325  SpecificShare::Block* sum_tach_;
326 
330  SpecificShare::Block* tilt_xy_;
331 
335  SpecificShare::Block* tilt_xy_avg_;
336 
340  SpecificShare::Block* tilt_enabled_;
341 
345  SpecificShare::Block* tilt_max_;
346 
350  SpecificShare::Block* tilt_xy_offset_;
351 
355  SpecificShare::Block* tilt_theta_;
356 
360  SpecificShare::Block* tilt_average_interval_;
361 
365  SpecificShare::Block* tilt_temp_;
366 
370  SpecificShare::Block* expected_;
371 
375  SpecificShare::Block* expectedCounts_;
376 
380  SpecificShare::Block* actualCounts_;
381 
386  SpecificShare::Block* errors_;
387 
391  SpecificShare::Block* state_;
392 
393  SpecificShare::Block* stateMask_;
394 
395  }; // End class TrackerBoard
396 
397  }; // End namespace control
398  }; // End namespace antenna
399 } // End namespace gcp
400 
401 #endif // End #ifndef
Definition: Site.h:33
Definition: Scan.h:21
Definition: Position.h:35
Definition: Board.h:24
Definition: TrackerOffset.h:28
TrackerBoard(SpecificShare *share, char *name)
Definition: TrackerBoard.cc:45
Definition: Atmosphere.h:23
Definition: SpecificShare.h:65
void archiveStatus(unsigned state, unsigned offSoruce, unsigned lacking)
Definition: TrackerBoard.cc:826
Definition: Pointing.h:35
Definition: Model.h:33
void archivePosition(AxisPositions *current, Position *commanded)
Definition: TrackerBoard.cc:145
Definition: PmacTarget.h:28
unsigned char trackerStateToBit(int state)
Definition: TrackerBoard.cc:843
Definition: AxisPositions.h:38
Definition: TrackerBoard.h:40
bool isNewFrame()
Definition: TrackerBoard.h:54