HiRISE
 Observation

Engineering_Header.hh
Go to the documentation of this file.
1 /* HiRISE Engineering_Header
2 
3 PIRL CVS ID: Engineering_Header.hh,v 1.28 2020/02/14 01:17:18 schaller Exp
4 
5 Copyright (C) 2004-2020 Arizona Board of Regents on behalf of the Lunar and
6 Planetary Laboratory at the University of Arizona.
7 
8 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
9 this file except in compliance with the License. You may obtain a copy of the
10 License at
11 
12  http://www.apache.org/licenses/LICENSE-2.0
13 
14 Unless required by applicable law or agreed to in writing, software distributed
15 under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
16 CONDITIONS OF ANY KIND, either express or implied. See the License for the
17 specific language governing permissions and limitations under the License.
18 */
19 #ifndef _HiRISE_Engineering_Header_
20 #define _HiRISE_Engineering_Header_
21 
22 // UA::HiRISE
23 #include "Data_Component.hh"
24 
25 #if defined (INCLUDE_PVL)
26 // idaeim::PVL
27 #include "PVL.hh"
28 #endif
29 
30 #include <iostream>
31 
32 namespace UA
33 {
34 namespace HiRISE
35 {
36 /*******************************************************************************
37  Engineering_Header
38 */
92 : public Data_Component
93 {
94 public:
95 /*==============================================================================
96  Constants:
97 */
99 static const char* const
100  ID;
101 
103 static const char* const
105 
117  {
131 
132  // The total number of Elements:
134  };
135 
137 static const char*
138  NAMES[];
139 
141 static const Index
143 
145 static const Index
147 
165 static const Index
167 
169 static const char* const
171 
174  {
177  };
178 
181  {
184  };
185 
187 static const u_int_32
189 
190 /*==============================================================================
191  Constructors
192 */
200 
211 explicit Engineering_Header (std::istream& stream);
212 
221 Engineering_Header (const Engineering_Header& component,
222  bool data_duplicate = true);
223 
230 
231 /*==============================================================================
232  Accessors
233 */
240 std::string id () const;
241 
247 const char* name () const;
248 
257 u_int_32 ADC_timing (Index channel, ADC_Timing_Field field) const;
258 
259 /*==============================================================================
260  Printing
261 */
273 std::ostream& print
274  (std::ostream& stream = std::cout, bool verbose = false) const;
275 
276 #if defined (INCLUDE_PVL)
277 /*==============================================================================
278  PVL
279 */
287 idaeim::PVL::Aggregate* PVL () const;
288 
300 
301 #endif // defined (INCLUDE_PVL)
302 
303 /*==============================================================================
304  Validation
305 */
315 bool is_valid () const;
316 };
317 
318 } // namespace HiRISE
319 } // namespace UA
320 #endif
A Data_Component provides a common, virtual interface for all HiRISE Observation data blocks.
Definition: Data_Component.hh:124
An Engineering_Header contains a minimal core set of observation control parameters.
Definition: Engineering_Header.hh:93
std::ostream & print(std::ostream &stream=std::cout, bool verbose=false) const
Prints the component structure and contents.
Definition: Engineering_Header.cc:231
static const u_int_32 ADC_TIMING_MASKS[2]
ADC_Timing_Settings field value masks.
Definition: Engineering_Header.hh:188
static const char *const FORMAT_FILENAME
The name of the external PDS format description file.
Definition: Engineering_Header.hh:170
static const char * NAMES[]
The name of each Element.
Definition: Engineering_Header.hh:138
Engineering_Header & operator=(const Engineering_Header &component)
Assigns another Engineering_Header to this one.
Definition: Engineering_Header.cc:188
std::string id() const
Provides the class ID on a line followed by the base Data_Component::id.
Definition: Engineering_Header.cc:201
DLL_Clock
Selects DLL_Locked{_Once} clock.
Definition: Engineering_Header.hh:174
@ FIRST_CLOCK
Definition: Engineering_Header.hh:175
@ SECOND_CLOCK
Definition: Engineering_Header.hh:176
u_int_32 ADC_timing(Index channel, ADC_Timing_Field field) const
Gets an ADC timing value.
Definition: Engineering_Header.cc:211
static const Index OFFSETS[]
Data_Block data storage address offset for each Element.
Definition: Engineering_Header.hh:146
const char * name() const
Gets the NAME of this class.
Definition: Engineering_Header.cc:205
Element
An Element refers to a data containing constituent of a component.
Definition: Engineering_Header.hh:117
@ Total_Elements
Definition: Engineering_Header.hh:133
@ Binning_Factor
Definition: Engineering_Header.hh:119
@ DLL_Frequency_Correct_Count
Definition: Engineering_Header.hh:128
@ DLL_Locked
Definition: Engineering_Header.hh:125
@ ADC_Timing_Settings
Definition: Engineering_Header.hh:129
@ Trimming
Definition: Engineering_Header.hh:122
@ FPGA_Code_Version
Definition: Engineering_Header.hh:124
@ Post_Binned_Lines
Definition: Engineering_Header.hh:123
@ LUT_Compressed
Definition: Engineering_Header.hh:118
@ Pad
Definition: Engineering_Header.hh:130
@ DLL_Locked_Once
Definition: Engineering_Header.hh:127
@ Delta_Line_Time
Definition: Engineering_Header.hh:120
@ DLL_Reset_Count
Definition: Engineering_Header.hh:126
@ TDI_Stages
Definition: Engineering_Header.hh:121
bool is_valid() const
Tests if the component data is valid.
Definition: Engineering_Header.cc:363
Engineering_Header()
Constructs an empty Engineering_Header.
Definition: Engineering_Header.cc:152
static const Index ARRAY_COUNTS[][2]
Data_Block array element value counts each keyed to an Element Index.
Definition: Engineering_Header.hh:166
ADC_Timing_Field
Selects ADC_timing field.
Definition: Engineering_Header.hh:181
@ ADC_RESET_TIMING
Definition: Engineering_Header.hh:182
@ ADC_IMAGE_TIMING
Definition: Engineering_Header.hh:183
static const char *const ID
Class identification name with source code version and date.
Definition: Engineering_Header.hh:100
static const char *const NAME
The component name.
Definition: Engineering_Header.hh:104
idaeim::PVL::Aggregate * PVL_description() const
Produces a PVL description of the component for a PDS label.
Definition: Engineering_Header.cc:305
idaeim::PVL::Aggregate * PVL() const
Produces a PVL rendition of the component.
Definition: Engineering_Header.cc:261
static const Index COMPONENT_BYTES
Total number of bytes in the Data_Block.
Definition: Engineering_Header.hh:142
unsigned int u_int_32
PIRL::Data_Block::Index Index
Data_Block element index type.
Definition: Data_Component.hh:95
University of Arizona.