CARMA C++
CompositeSubarrayDisplay.h
1 /*
2  * @file
3  *
4  * Displays tracking info etc about each subarray.
5  * This is a tear-off & mod of Tom's SubarrayDisplay defined in
6  * rtdcontrolsubarrays.cc.
7  *
8  * @author Marc Pound
9  * $Id: CompositeSubarrayDisplay.h,v 1.7 2014/04/02 23:11:16 iws Exp $
10  *
11  * $CarmaCopyright$
12  */
13 
14 #include <iosfwd>
15 #include <sstream>
16 #include <vector>
17 #include <string>
18 
19 #include "carma/util/Program.h"
21 
24 
25 #include "carma/ui/rtd/common/MonitorDisplay.h"
26 #include "carma/ui/rtd/common/RtAzelPlot.h"
27 #include "carma/ui/rtd/windows/AzelPlotManager.h"
29 
30 namespace carma {
31  namespace ui {
32  namespace rtd {
33 
34  // forward declaration
35  class AzelPlotManager;
36 
37  class CompositeSubarrayDisplay : public MonitorDisplay {
38  public:
39  struct AntNameInfo {
40  std::string longName;
41  std::string shortName;
42  int carmaAntNo;
43  CellColor color;
44  };
45 
46  struct AntNameList {
47  std::string current;
48  std::string previous;
49  };
50 
51  struct CorrNameList {
52  std::string current;
53  std::string previous;
54  };
55 
56 
57  CompositeSubarrayDisplay( const std::string & subtitle,
58  bool visibleTimePanel );
59 
60  ~CompositeSubarrayDisplay( );
61 
62  SubarrayStatus * subarrayStatus( int saIndex );
63 
64  int getMaxSaAntNames( ) const;
65 
66  const AntNameInfo & saAntNameInfoRef( int saIndex, int antIndex ) const;
74  const AntNameList & saAntNameListRef( int saIndex ) const;
75 
76  const CorrNameList & saCorrNameListRef( int saIndex ) const;
77 
78  RtAzelPlotPtr getAzelPlot( const int saNo );
79  bool anyMembershipHasChanged ( void ) const;
80  bool anyCorrMembershipHasChanged ( void ) const;
81 
82  //void notifyUserMembershipHasChanged( const int altNumber );
83  //void setNotifyCell( CellString * cell );
84  //void clearNotifyCell( void );
85 
86  protected:
87  virtual void internalUpdate( );
88 
89  void updateAllSubarrays( );
90 
91  void updateAntNameInfo( );
92 
93  void updateCorrNameInfo();
94 
95  CellColor calcAntNameColor(
96  const carma::monitor::ControlSubsystem::Antenna * ant,
97  CellColor defaultColor ) const;
98 
99  private:
100  const int maxShownCarmaAntNo_;
101 
102  std::vector< SubarrayStatus * > subarrayStatus_;
103  std::vector< std::vector< AntNameInfo > > subarraysAntNames_;
104  std::vector< AntNameList > antNameLists_;
105  std::vector< CorrNameList > corrNameLists_;
106  AzelPlotManager azelPlotManager_;
107  bool membershipHasChanged ( const int saIndex ) const;
108  bool corrMembershipHasChanged( const int asIndex ) const;
109  ui::rtd::CellString * notifyCell;
110  };
111 
112 } } } // namespace
113 
The monitor system base class.
Semi-hand-forged extensions to the auto-generated classes for the Control subsystem.
This is the interface file for extra APIs for program logging.
enum carma::ui::rtd::CellColorEnum CellColor
Cell color choices.
Class to provide information about CARMA Subarray status for display.