Observation
|
A Science_Channel_Header contains the science metadata describing the observation channel data. More...
#include <Science_Channel_Header.hh>
Classes | |
struct | Conversion_Coefficients |
Sensor conversion coefficients. More... | |
Public Types | |
enum | Element { Sync, Post_Binned_Pixels_Per_Line, Post_Binned_Lines, Alignment, CPMM, Channel, Observation_ID, Transaction_ID, Powered_CPMMs_Count, Powered_CPMMs_Map, Expose_MRO_Time, Expose_HiRISE_Time, Analog_Power_On_Time, Analog_Power_On_Start_Time, Exposure_Start_Time, Expose_Time_Ticks, Total_Image_Bytes, Line_Time_Operation, Expose_Command, Expose_Response, Line_Time_Command_Received, Binning_Command_Received, TDI_Command_Received, Line_Count_Command_Received, CPMM_Power_Command_Received, Expose_Time_Command_Received, LUT_Command_Received, Pad_0, Digital_Power_Operation, Analog_Power_Operation, Trimming_Operation, TDI_Operation, Line_Count_Operation, Binning_Operation, LUT_Operation, Expose_Time_Milliseconds, Readout_Start_Time, Readout_Pad_Bytes, Pixels_Per_Line, Extra_Pixels, Pixel_Bytes, Pixel_Data_Bytes, Line_Header_Bytes, Channel_Readout_Bytes, Channel_Readout_Ticks, Max_Storable_Lines, Max_Storable_Lines_Exceeded, Total_Lines_Collected, Total_Lines_Exposed, Line_Time_Nanoseconds, Channel_Readout_Command, Channel_Readout_Response, Pad_1, Optical_Bench_Flexure_Temperature, Optical_Bench_Tertiary_Mirror_Temperature, Optical_Bench_Fold_Flat_Temperature, Optical_Bench_FPA_Temperature, Optical_Bench_FPE_Temperature, Optical_Bench_Living_Room_Temperature, Optical_Bench_Box_Beam_Temperature, Optical_Bench_Cover_Temperature, Field_Stop_Temperature, FPA_Positive_Y_Temperature, FPA_Negative_Y_Temperature, FPE_Temperature, Primary_Mirror_Mount_Temperature, Primary_Mirror_Temperature, Primary_Mirror_Baffle_Temperature, Metering_Structure_Truss_Leg_0_A_Temperature, Metering_Structure_Truss_Leg_0_B_Temperature, Metering_Structure_Truss_Leg_120_A_Temperature, Metering_Structure_Truss_Leg_120_B_Temperature, Metering_Structure_Truss_Leg_240_A_Temperature, Metering_Structure_Truss_Leg_240_B_Temperature, Barrel_Baffle_Temperature, Sun_Shade_Temperature, Spider_Leg_30_Temperature, Spider_Leg_150_Temperature, Spider_Leg_270_Temperature, Secondary_Mirror_Metering_Ring_Temperature, Secondary_Mirror_Temperature, Secondary_Mirror_Baffle_Temperature, IEA_Temperature, Focus_Motor_Temperature, CPMM_Positive_29_Voltage, CPMM_Positive_29_Current, CPMM_Positive_10_Voltage, CPMM_Positive_10_Current, CPMM_Positive_5_Voltage, CPMM_Positive_5_Current, CPMM_Positive_3_3_Voltage, CPMM_Positive_3_3_Current, CPMM_Positive_2_5_Voltage, CPMM_Positive_2_5_Current, CPMM_Positive_1_8_Voltage, CPMM_Positive_1_8_Current, CPMM_Negative_5_Voltage, CPMM_Negative_5_Current, IE_PWS_Board_Temperature, CPMM_PWS_Board_Temperature, Heater_Current, Mech_TLM_Board_Temperature, Instrument_Control_Board_Temperature, Instrument_Control_FPGA_Positive_2_5_Voltage, Mech_TLM_FPGA_Positive_2_5_Voltage, IEA_Positive_28_Voltage, IEA_Negative_15_Voltage, IEA_Positive_15_Voltage, IEA_Positive_5_Voltage, Exposure_Readout_Count, Default_TDI, Default_Trimming, Default_Line_Count, Default_Binning, Focus_Position, Heater_Control_Mode, Heater_Zones_Enabled, Heater_Zones_State, Heater_Disabled_For_Exposure, Heater_Zones_Pre_Exposure_State, FPGA_Last_Response, Heater_Controls, Last_Command_Time, Pad_2, Checksum, Total_Elements } |
An Element refers to a data containing constituent of a component. More... | |
enum | Heater_Mode { CLOSED_LOOP, DUTY_CYCLES } |
Heater_Control_Mode values: determines the Heater_Controls value meanings. More... | |
enum | Setpoint { LOW, HIGH } |
Heater_Controls word value type when the Heater_Mode is CLOSED_LOOP. More... | |
enum | Duty_Cycle { ON_SECONDS, OFF_SECONDS } |
Heater_Controls word value type when the Heater_Mode is DUTY_CYCLES. More... | |
enum | { TOTAL_CONVERSION_COEFFICIENTS = 7 } |
Number of coefficients (n) in the conversion polynomial. More... | |
Public Member Functions | |
Science_Channel_Header () | |
Constructs an empty Science_Channel_Header. | |
Science_Channel_Header (std::istream &stream) | |
Constructs an Science_Channel_Header loaded from a data stream. | |
Science_Channel_Header (const Science_Channel_Header &component, bool data_duplicate=true) | |
Copy constructor. | |
Science_Channel_Header & | operator= (const Science_Channel_Header &component) |
Assigns another Science_Channel_Header to this one. | |
std::string | id () const |
Provides the class ID on a line followed by the base Data_Component::id. | |
const char * | name () const |
Gets the NAME of this class. | |
std::string | clock_count (Index element, Index index=0) const |
Gets a formatted clock count string for a Time Element. | |
Science_Channel_Header & | clock_count (const std::string &counter, Index element, Index index=0) |
Sets a Time Element from a formatted clock count string. | |
double | time (Index element, Index index=0) const |
Gets a Time Element value as a single real seconds value. | |
Science_Channel_Header & | time (double seconds, Index element, Index index=0) |
Sets a Time Element value based on a real seconds value. | |
bool | FPGA_last_response_CPMM_PWS_enabled () const |
Tests if the FPGA_Last_Response Element indicates that the CPMM power supply was enabled during the observation. | |
Science_Channel_Header & | FPGA_last_response_CPMM_PWS_enabled (bool enabled) |
Sets the FPGA_Last_Response Element to indicate whether the CPMM power supply was enabled during the observation. | |
bool | FPGA_last_response_telemetry_gathering () const |
Tests if the FPGA_Last_Response Element indicates that telemetry gathering was enabled at the time of the observation. | |
Science_Channel_Header & | FPGA_last_response_telemetry_gathering (bool enabled) |
Sets the FPGA_Last_Response Element to indicate whether telemetry gathering was enabled at the time of the observation. | |
bool | FPGA_last_response_FM_relay_PHB_closed () const |
Tests if the FPGA_Last_Response Element indicates that the focus mechanism relay PhB was closed at the time of the observation. | |
Science_Channel_Header & | FPGA_last_response_FM_relay_PHB_closed (bool closed) |
Sets the FPGA_Last_Response Element to indicate whether the focus mechanism relay PhB was closed at the time of the observation. | |
bool | FPGA_last_response_FM_relay_PHA_closed () const |
Tests if the FPGA_Last_Response Element indicates that the focus mechanism relay PhA was closed at the time of the observation. | |
Science_Channel_Header & | FPGA_last_response_FM_relay_PHA_closed (bool closed) |
Sets the FPGA_Last_Response Element to indicate whether the focus mechanism relay PhA was closed at the time of the observation. | |
bool | FPGA_last_response_FM_overheated () const |
Tests if the FPGA_Last_Response Element indicates that the focus mechanism was overheated at the time of the observation. | |
Science_Channel_Header & | FPGA_last_response_FM_overheated (bool overheated) |
Sets the FPGA_Last_Response Element to indicate whether the focus mechanism was overheated at the time of the observation. | |
bool | FPGA_last_response_FM_moving () const |
Tests if the FPGA_Last_Response Element indicates that the optics focus mechanism was moving during the observation. | |
Science_Channel_Header & | FPGA_last_response_FM_moving (bool moving) |
Sets the FPGA_Last_Response Element to indicate whether the focus mechanism was moving at the time of the observation. | |
u_int_32 | FPGA_last_response_stim_LEDs_on () const |
Gets the bit map from the FPGA_Last_Response Element that indicate which stim lamps were on during the observation. | |
Science_Channel_Header & | FPGA_last_response_stim_LEDs_on (u_int_32 stim_LEDs_map) |
Sets the bit map in the FPGA_Last_Response Element that indicate which stim lamps were on during the observation. | |
u_int_32 | FPGA_last_response_heaters_on () const |
Gets the bit map from the FPGA_Last_Response Element that indicate which CCD heater elements were on during the observation. | |
Science_Channel_Header & | FPGA_last_response_heaters_on (u_int_32 heaters_map) |
Sets the bit map in the FPGA_Last_Response Element that indicate which CCD heater elements were on during the observation. | |
const Conversion_Coefficients * | conversion (Index element) const |
Gets a Conversion_Coefficients set for an Element. | |
double | convert (Index element, Index index=0) const |
Converts an Element sensor value to its standard units. | |
const char * | converted_units (Index element) const |
Gets the stadard units of representation for an Element. | |
std::ostream & | print (std::ostream &stream=std::cout, bool verbose=false) const |
Prints the component structure and contents. | |
idaeim::PVL::Aggregate * | PVL () const |
Produces a PVL rendition of the component. | |
idaeim::PVL::Aggregate * | PVL_description () const |
Produces a PVL description of the component for a PDS label. | |
bool | is_valid () const |
Tests if the component data is valid. | |
Static Public Member Functions | |
static bool | is_sync (const void *data_at) |
Tests if some data contains a sync sequence. | |
static void * | sync_at (void *begin, void *end) |
Searches a range of bytes for a Science Channel Header sync pattern. | |
Public Attributes | |
static const u_int_32 | FPGA_RESPONSE_TELEMETRY_GATHERING_BIT_MASK = (1 << 21) |
static const u_int_32 | FPGA_RESPONSE_FM_RELAY_PHB_CLOSED_BIT_MASK = (1 << 20) |
static const u_int_32 | FPGA_RESPONSE_FM_RELAY_PHA_CLOSED_BIT_MASK = (1 << 19) |
static const u_int_32 | FPGA_RESPONSE_FM_OVERHEATED_BIT_MASK = (1 << 18) |
static const u_int_32 | FPGA_RESPONSE_FM_MOVING_BIT_MASK = (1 << 17) |
static const u_int_32 | FPGA_RESPONSE_STIM_LEDS_BIT_MASK |
static const u_int_32 | FPGA_RESPONSE_STIM_LEDS_BIT_MASK_SHIFT = 14 |
static const u_int_32 | FPGA_RESPONSE_HEATERS_ON_BIT_MASK = 0x3FFF |
Static Public Attributes | |
static const char *const | ID = "UA::HiRISE::Science_Channel_Header (1.54 2020/05/12 22:59:48)" |
Class identification name with source code version and date. | |
static const char *const | NAME = "Science Channel Header" |
The component name. | |
static const char * | NAMES [] |
The name of each Element. | |
static const Index | COMPONENT_BYTES = SCIENCE_CHANNEL_HEADER_BYTES |
Total number of bytes in the Data_Block. | |
static const Index | OFFSETS [] |
Data_Block data storage address offset for each Element. | |
static const Index | ARRAY_COUNTS [][2] |
Data_Block array element value counts each keyed to an Element Index. | |
static const u_int_32 | SYNC = 0xFFFF0000 |
Expected Sync Element values. | |
static const int | SYNC_BYTES = 2 * sizeof (SYNC) |
The number of bytes in the sync pattern. | |
static const u_int_32 | FPGA_RESPONSE_CPMM_PWS_ENABLED_BIT_MASK = (1 << 22) |
FPGA_Last_Response Element bit fields. | |
static const Conversion_Coefficients | CONVERSION_COEFFICIENTS [] |
The array of all Conversion_Coefficients. | |
static const double | CELSIUS_TO_KELVINS_OFFSET |
Offset to be added to Celsius degrees to obtain Kelvins. | |
static const char *const | FORMAT_FILENAME = SCIENCE_CHANNEL_HEADER_FORMAT_FILE |
The name of the external PDS format description file. |
A Science_Channel_Header contains the science metadata describing the observation channel data.
This Data_Component is the first in the observation channel data stream. It includes all parameters that were used in controlling the instrument during the collection of observation data. Thus it is the definative record of the instrument observation operation. Many of the Elements should have identical values for all data channels of an observation. This redundancy is used to help reconcile corrupted data due to gaps in the spacecraft downlink transmission. Some Elements are sets of values that require detailed engineering knowlege of the instrument to correctly interpret.
For details consult the "HiRISE Command and Telemetry Handbook" (http://hirise.lpl.arizona.edu/team_site/instrument/Command_and_Telemetry_Handbook/).
Header data block layout:
Offset Size Description ------ ---- ----------- 0 8 Sync pattern (0xFFFF0000 FFFF0000)
Image identification and geometry:
8 2 Post-binned pixels per line 10 4 Post-binned lines 14 2 (alignment bytes) 16 2 CPMM (0-13) 18 2 Channel (0, 1) 20 4 Observation ID (a.k.a. Image ID) 24 4 Transaction ID 28 4 Number of powered on CPMMs (0-13) 32 4 Powered on CPMMs map
Times:
36 8 MRO Expose time (seconds and subsecond counts) 44 8 HiRISE Expose time (seconds and subsecond counts) 52 8 Analog power on time (seconds and subsecond counts) 60 8 Analog power on start time (seconds and subsecond counts) 68 8 Exposure start time (seconds and subsecond counts) 76 4 Expose time (10 msec ticks)
80 4 Total image bytes
Commands:
84 20 Line time operation (Operation) 104 4 Expose command 108 4 Expose response 112 4 Line time command received 116 4 Binning command received 120 4 TDI command received 124 4 Line count command received 128 4 CPMM power command received 132 4 Expose time command received 136 4 LUT command received 140 8 (padding) 148 20 Digital power operation (Operation) 168 20 Analog power operation (Operation) 188 20 Trimming operation (Operation) 208 20 TDI operation (Operation) 228 20 Line count operation (Operation) 248 20 Binning operation (Operation) 268 80 LUT operation (LUT_Operation)
Image data specifications:
348 4 Expose time 352 16 Readout start times (Time_Value for each channel) 368 4 Readout pad bytes 372 4 Pixels per line 376 4 Extra pixels 380 4 Pixel bytes (bytes per pixel) 384 4 Pixel data bytes (toal pixel bytes per channel) 388 4 Line header bytes 392 4 Channel readout bytes (incl. pixels, LUT, Eng. and pad) 396 4 Channel readout ticks (10 msec ticks) 400 4 Maximum storable lines 404 4 Maximum storable lines exceeded 408 4 Total lines collected 412 4 Total lines exposed 416 4 Line time (nanoseconds) 420 8 Readout command for each channel 428 8 Readout response for each channel 436 12 (padding)
Engineering Data (temperatures, voltages, currents):
448 2 Optical bench near +X MRO flexure temperature 450 2 Optical bench near tertiary mirror temperature 452 2 Optical bench near fold flat #2 temperature 454 2 Optical bench near FPA temperature 456 2 Optical bench near FPE temperature 458 2 Optical bench in sunken living room temperature 460 2 Optical bench box beam (+Y face) temperature 462 2 Optical bench cover (external) temperature 464 2 Field stop temperature 466 2 FPA +Y side temperature 468 2 FPA -Y side temperature 470 2 FPE temperature 472 2 Primary mirror at mount (+Y) temperature 474 2 Primary mirror at maximum thickness temperature 476 2 Primary mirror baffle near base (external) temperature 478 2 Metering structure truss leg 0 - A leg temperature 480 2 Metering structure truss leg 0 - B leg temperature 482 2 Metering structure truss leg 120 - A leg temperature 484 2 Metering structure truss leg 120 - B leg temperature 486 2 Metering structure truss leg 240 - A leg temperature 488 2 Metering structure truss leg 240 - B leg temperature 490 2 Barrel baffle temperature 492 2 Sun shade under MLI temperature 494 2 Spider leg 30 temperature 496 2 Spider leg 150 temperature 498 2 Spider leg 270 temperature 500 2 Secondary mirror metering ring temperature 502 2 Secondary mirror temperature 504 2 Secondary mirror baffle near base (external) temperature 506 2 IEA temperature 508 2 Focus motor temperature 510 2 +29V CPMM Voltage 512 2 +29V CPMM Current 514 2 +10V CPMM Voltage 516 2 +10V CPMM Current 518 2 +5V CPMM Voltage 520 2 +5V CPMM Current 522 2 +3.3V CPMM Voltage 524 2 +3.3V CPMM Current 526 2 +2.5V CPMM Voltage 528 2 +2.5V CPMM Current 530 2 +1.8V CPMM Voltage 532 2 +1.8V CPMM Current 534 2 -5V CPMM Voltage 536 2 -5V CPMM Current 538 2 IE PWS board temperature 540 2 CPMM PWS board temperature 542 2 Total heater current 544 2 Mech/TLM board temperature 546 2 Inst/Cont board temperature 548 2 Inst/Cont 2.5V FPGA voltage monitor 550 2 Mech/TLM 2.5 FPGA voltage monitor 552 2 +28V IEA voltage 554 2 -15V IEA voltage 556 2 +15V IEA voltage 558 2 +5V IEA voltage
560 4 Exposure readout count
Defaults:
564 4 Default TDI 568 4 Default trimming 572 4 Default line count 576 4 Default binning
580 4 Focus position
Heaters:
584 4 Heater control mode (0 = setpoint, 1 = duty cycle) 588 4 Heater enable (zones bitmask) 592 4 Heater state (zones bitmask) 596 4 Heater disabled for exposure 600 4 Heater pre-exposure state (zones bitmask) 604 4 FPGA last response Bits Description ----- ----------- 0 -13 Heaters on bit map 0 - off 1 - on 14-16 Stim LEDs on bit map 0 - off 1 - on 17 Focus Mechanism moving (flag) 18 Focus Mechanism overheated (flag) 19 Focus Mechanism relay PhA closed (flag) 20 Focus Mechanism relay PhB closed (flag) 21 Telemetry gathering (flag) 22 CPMM PWS enabled (flag) 608 56 Heater controls (14 16-bit word pairs)
664 8 Last command time (seconds and subsecond counts)
672 126 (padding)
798 2 Checksum
N.B.: Data_Block values are MSB ordered.
1.42
enum Element |
An Element refers to a data containing constituent of a component.
Each named Element is an Index into various data sets that define the attributes of a component; including their NAMES, data storage address OFFSETS, and array element value ARRAY_COUNTS. It is the key Index argument of the data access methods.
enum Heater_Mode |
enum Setpoint |
enum Duty_Cycle |
anonymous enum |
Constructs an empty Science_Channel_Header.
The base Data_Component is initialized with the NAMES, COMPONENT_BYTES, OFFSETS, and ARRAY_COUNTS that define an Science_Channel_Header component structure.
Science_Channel_Header | ( | std::istream & | stream ) | [explicit] |
Constructs an Science_Channel_Header loaded from a data stream.
The base Data_Component is initialized with the NAMES, COMPONENT_BYTES, OFFSETS, and ARRAY_COUNTS that define an Science_Channel_Header component structure. The stream is then read for COMPONENT_BYTES to fill the data block. Therefore, the stream must be positioned at the beginning of the Science_Channel_Header data.
stream | The istream from which to read the component data. |
Science_Channel_Header | ( | const Science_Channel_Header & | component, |
bool | data_duplicate = true |
||
) |
Copy constructor.
component | The Science_Channel_Header to be copied. |
data_duplicate | true if the data content of the copied component is to be duplicated in the copy; false if the data content is to be shared. |
Science_Channel_Header & operator= | ( | const Science_Channel_Header & | component ) |
Assigns another Science_Channel_Header to this one.
component | The Science_Channel_Header to be assigned. |
References Data_Component::operator=().
string id | ( | ) | const [virtual] |
Provides the class ID on a line followed by the base Data_Component::id.
Reimplemented from Data_Component.
References Science_Channel_Header::ID.
const char * name | ( | ) | const [virtual] |
Gets the NAME of this class.
Implements Data_Component.
References Science_Channel_Header::NAME.
Gets a formatted clock count string for a Time Element.
All XXX_Time Elements are an array of two values: a clock seconds count and a "subseconds" count; where the first value is the count of seconds since the Instrument::SPACECRAFT_EPOCH, and the second value is the count of fraction of a second ticks having a tick interval that is clock dependent. A specific text representation format is used for these clock counts so they can be recognized and interpreted correctly. This method produces that representation:
seconds:subseconds
element | An Element Index. Warning: This value is not checked to verify that it actually refers to a Time Element. |
index | For the Readout_Start_Time, the Index of the clock count value set to use. N.B.: Since clock counts are always a pair of values, this Index is NOT the Element array entry; it is internally doubled to select the correct array entries. |
Science_Channel_Header& clock_count | ( | const std::string & | counter, |
Index | element, | ||
Index | index = 0 |
||
) |
Sets a Time Element from a formatted clock count string.
A clock count with the representation:
seconds:subseconds
is used to set the seconds and subseconds values of a Time Element.
counter | The string containing the formatted clock count. |
element | An Element Index. Warning: This value is not checked to verify that it actually refers to a Time Element. |
index | For the Readout_Start_Time, the Index of the clock count value set to use. N.B.: Since clock counts are always a pair of values, this Index is NOT the Element array entry; it is internally doubled to select the correct array entries. |
Gets a Time Element value as a single real seconds value.
The "subseconds" portion of the clock count is converted to a real fraction second value and added to the seconds count portion. For the Expose_MRO_Time Element the Instrument::MRO_CLOCK_SUBTICK_MICROS is used to convert the subseconds count to microseconds; all other Elements use the Instrument::HIRISE_CLOCK_SUBTICK_MICROS conversion factor.
element | An Element Index. Warning: This value is not checked to verify that it actually refers to a Time Element. |
index | For the Readout_Start_Time, the Index of the clock count value set to use. N.B.: Since clock counts are always a pair of values, this Index is NOT the Element array entry; it is internally doubled to select the correct array entries. |
Referenced by Science_Channel_Header::PVL().
Science_Channel_Header& time | ( | double | seconds, |
Index | element, | ||
Index | index = 0 |
||
) |
Sets a Time Element value based on a real seconds value.
The real seconds value is converted to separate seconds and "subseconds" values which are put in the data block. For the Expose_MRO_Time Element the Instrument::MRO_CLOCK_SUBTICK_MICROS is used to convert the fractional seconds to subseconds count; all other Elements use the Instrument::HIRISE_CLOCK_SUBTICK_MICROS conversion factor.
seconds | Seconds since the Instrument::SPACECRAFT_EPOCH to microsecond accuracy. |
element | An Element Index. Warning: This value is not checked to verify that it actually refers to a Time Element. |
index | For the Readout_Start_Time, the Index of the clock count value set to use. N.B.: Since clock counts are always a pair of values, this Index is NOT the Element array entry; it is internally doubled to select the correct array entries. |
bool FPGA_last_response_CPMM_PWS_enabled | ( | ) | const |
Tests if the FPGA_Last_Response Element indicates that the CPMM power supply was enabled during the observation.
Bit 22 of the Element value is tested.
References Science_Channel_Header::FPGA_Last_Response, and Science_Channel_Header::FPGA_RESPONSE_CPMM_PWS_ENABLED_BIT_MASK.
Referenced by Science_Channel_Header::PVL().
Science_Channel_Header & FPGA_last_response_CPMM_PWS_enabled | ( | bool | enabled ) |
Sets the FPGA_Last_Response Element to indicate whether the CPMM power supply was enabled during the observation.
Bit 22 of the Element value is set or cleared.
enabled | true to set the bit; false to clear it. |
bool FPGA_last_response_telemetry_gathering | ( | ) | const |
Tests if the FPGA_Last_Response Element indicates that telemetry gathering was enabled at the time of the observation.
Bit 21 of the Element value is tested.
References Science_Channel_Header::FPGA_Last_Response, and Science_Channel_Header::FPGA_RESPONSE_TELEMETRY_GATHERING_BIT_MASK.
Referenced by Science_Channel_Header::PVL().
Science_Channel_Header & FPGA_last_response_telemetry_gathering | ( | bool | enabled ) |
Sets the FPGA_Last_Response Element to indicate whether telemetry gathering was enabled at the time of the observation.
Bit 21 of the Element value is set or cleared.
enabled | true to set the bit; false to clear it. |
bool FPGA_last_response_FM_relay_PHB_closed | ( | ) | const |
Tests if the FPGA_Last_Response Element indicates that the focus mechanism relay PhB was closed at the time of the observation.
Bit 20 of the Element value is tested.
References Science_Channel_Header::FPGA_Last_Response, and Science_Channel_Header::FPGA_RESPONSE_FM_RELAY_PHB_CLOSED_BIT_MASK.
Referenced by Science_Channel_Header::PVL().
Science_Channel_Header & FPGA_last_response_FM_relay_PHB_closed | ( | bool | closed ) |
Sets the FPGA_Last_Response Element to indicate whether the focus mechanism relay PhB was closed at the time of the observation.
Bit 20 of the Element value is set or cleared.
closed | true to set the bit; false to clear it. |
bool FPGA_last_response_FM_relay_PHA_closed | ( | ) | const |
Tests if the FPGA_Last_Response Element indicates that the focus mechanism relay PhA was closed at the time of the observation.
Bit 19 of the Element value is tested.
References Science_Channel_Header::FPGA_Last_Response, and Science_Channel_Header::FPGA_RESPONSE_FM_RELAY_PHA_CLOSED_BIT_MASK.
Referenced by Science_Channel_Header::PVL().
Science_Channel_Header & FPGA_last_response_FM_relay_PHA_closed | ( | bool | closed ) |
Sets the FPGA_Last_Response Element to indicate whether the focus mechanism relay PhA was closed at the time of the observation.
Bit 19 of the Element value is set or cleared.
closed | true to set the bit; false to clear it. |
bool FPGA_last_response_FM_overheated | ( | ) | const |
Tests if the FPGA_Last_Response Element indicates that the focus mechanism was overheated at the time of the observation.
Bit 18 of the Element value is tested.
References Science_Channel_Header::FPGA_Last_Response, and Science_Channel_Header::FPGA_RESPONSE_FM_OVERHEATED_BIT_MASK.
Referenced by Science_Channel_Header::PVL().
Science_Channel_Header & FPGA_last_response_FM_overheated | ( | bool | overheated ) |
Sets the FPGA_Last_Response Element to indicate whether the focus mechanism was overheated at the time of the observation.
Bit 18 of the Element value is set or cleared.
overheated | true to set the bit; false to clear it. |
bool FPGA_last_response_FM_moving | ( | ) | const |
Tests if the FPGA_Last_Response Element indicates that the optics focus mechanism was moving during the observation.
Bit 17 of the Element value is tested.
References Science_Channel_Header::FPGA_Last_Response, and Science_Channel_Header::FPGA_RESPONSE_FM_MOVING_BIT_MASK.
Referenced by Science_Channel_Header::PVL().
Science_Channel_Header & FPGA_last_response_FM_moving | ( | bool | moving ) |
Sets the FPGA_Last_Response Element to indicate whether the focus mechanism was moving at the time of the observation.
Bit 17 of the Element value is set or cleared.
moving | true to set the bit; false to clear it. |
u_int_32 FPGA_last_response_stim_LEDs_on | ( | ) | const |
Gets the bit map from the FPGA_Last_Response Element that indicate which stim lamps were on during the observation.
Bits 14-16 contain the bit map.
References Science_Channel_Header::FPGA_Last_Response, Science_Channel_Header::FPGA_RESPONSE_STIM_LEDS_BIT_MASK, and Science_Channel_Header::FPGA_RESPONSE_STIM_LEDS_BIT_MASK_SHIFT.
Referenced by Science_Channel_Header::PVL().
Science_Channel_Header & FPGA_last_response_stim_LEDs_on | ( | u_int_32 | stim_LEDs_map ) |
Sets the bit map in the FPGA_Last_Response Element that indicate which stim lamps were on during the observation.
Bits 14-16 contain the bit map.
stim_LEDs_map | A 32-bit integer in which the least significant STIMULATOR_LEDS contain the stim lamp map in which a set bit indicates the lamp was on. |
u_int_32 FPGA_last_response_heaters_on | ( | ) | const |
Gets the bit map from the FPGA_Last_Response Element that indicate which CCD heater elements were on during the observation.
Bits 0-13 contain the bit map.
References Science_Channel_Header::FPGA_Last_Response, and Science_Channel_Header::FPGA_RESPONSE_HEATERS_ON_BIT_MASK.
Referenced by Science_Channel_Header::PVL().
Science_Channel_Header & FPGA_last_response_heaters_on | ( | u_int_32 | heaters_map ) |
Sets the bit map in the FPGA_Last_Response Element that indicate which CCD heater elements were on during the observation.
Bits 0-13 contain the bit map.
heaters_map | A 32-bit integer in which the least significant CCDS contain the heater element map in which a set bit indicates the heater was on. |
const Conversion_Coefficients* conversion | ( | Index | element ) | const |
Gets a Conversion_Coefficients set for an Element.
A Conversion_Coefficients set contains the polynomial coefficients for converting an Element sensor value to standard units, specifies what those units are.
element | An Element Index. |
Converts an Element sensor value to its standard units.
element | An Element Index. |
index | An array entry index for an Element with more than one value. |
Referenced by Science_Channel_Header::PVL().
const char* converted_units | ( | Index | element ) | const |
Gets the stadard units of representation for an Element.
element | An Element Index. |
Referenced by Science_Channel_Header::PVL().
ostream & print | ( | std::ostream & | stream = std::cout , |
bool | verbose = false |
||
) | const [virtual] |
Prints the component structure and contents.
Verbose printing includes the class ID and the Pad and Alignment Elements.
stream | The ostream where the listing will be written. |
verbose | true if the listing is to be verbose, otherwise some structural details will be omitted for easier human consumption. |
Implements Data_Component.
References ID, Data_Component::internet_checksum(), Data_Component::put(), and Observation_ID::text().
Referenced by list_data(), and list_selections().
Aggregate * PVL | ( | ) | const [virtual] |
Produces a PVL rendition of the component.
Elements are organized into logical groupings. The Pad, Alignment and Checksum Elements are not included.
Implements Data_Component.
References Array::add(), Aggregate::add(), Science_Channel_Header::Analog_Power_On_Start_Time, Science_Channel_Header::Analog_Power_On_Time, Science_Channel_Header::Analog_Power_Operation, Science_Channel_Header::Binning_Command_Received, Science_Channel_Header::Binning_Operation, Instrument::CCD_NAMES, Instrument::CCDS, Science_Channel_Header::Channel, Science_Channel_Header::Channel_Readout_Bytes, Science_Channel_Header::Channel_Readout_Command, Science_Channel_Header::Channel_Readout_Response, Science_Channel_Header::Channel_Readout_Ticks, Vectal< T >::clear(), Science_Channel_Header::CLOSED_LOOP, Science_Channel_Header::convert(), Science_Channel_Header::converted_units(), Data_Block::count_of(), Science_Channel_Header::CPMM, Science_Channel_Header::CPMM_Negative_5_Current, Science_Channel_Header::CPMM_Positive_29_Voltage, Science_Channel_Header::CPMM_Power_Command_Received, Science_Channel_Header::CPMM_PWS_Board_Temperature, Science_Channel_Header::Default_Binning, Science_Channel_Header::Default_TDI, Science_Channel_Header::Digital_Power_Operation, Science_Channel_Header::DUTY_CYCLES, Science_Channel_Header::Expose_Command, Science_Channel_Header::Expose_HiRISE_Time, Science_Channel_Header::Expose_MRO_Time, Science_Channel_Header::Expose_Response, Science_Channel_Header::Expose_Time_Milliseconds, Science_Channel_Header::Expose_Time_Ticks, Science_Channel_Header::Exposure_Readout_Count, Science_Channel_Header::Exposure_Start_Time, Science_Channel_Header::Extra_Pixels, Science_Channel_Header::Focus_Motor_Temperature, Science_Channel_Header::Focus_Position, Science_Channel_Header::FPGA_last_response_CPMM_PWS_enabled(), Science_Channel_Header::FPGA_last_response_FM_moving(), Science_Channel_Header::FPGA_last_response_FM_overheated(), Science_Channel_Header::FPGA_last_response_FM_relay_PHA_closed(), Science_Channel_Header::FPGA_last_response_FM_relay_PHB_closed(), Science_Channel_Header::FPGA_last_response_heaters_on(), Science_Channel_Header::FPGA_last_response_stim_LEDs_on(), Science_Channel_Header::FPGA_last_response_telemetry_gathering(), Science_Channel_Header::Heater_Control_Mode, Science_Channel_Header::Heater_Controls, Science_Channel_Header::Heater_Current, Science_Channel_Header::Heater_Disabled_For_Exposure, Science_Channel_Header::Heater_Zones_Enabled, Science_Channel_Header::Heater_Zones_Pre_Exposure_State, Science_Channel_Header::Heater_Zones_State, Science_Channel_Header::IE_PWS_Board_Temperature, Science_Channel_Header::IEA_Positive_5_Voltage, Science_Channel_Header::Instrument_Control_Board_Temperature, Science_Channel_Header::Instrument_Control_FPGA_Positive_2_5_Voltage, Science_Channel_Header::Last_Command_Time, Science_Channel_Header::Line_Count_Command_Received, Science_Channel_Header::Line_Count_Operation, Science_Channel_Header::Line_Header_Bytes, Science_Channel_Header::Line_Time_Command_Received, Science_Channel_Header::Line_Time_Nanoseconds, Science_Channel_Header::Line_Time_Operation, Science_Channel_Header::LUT_Operation, Science_Channel_Header::Max_Storable_Lines, Science_Channel_Header::Max_Storable_Lines_Exceeded, Science_Channel_Header::Mech_TLM_Board_Temperature, Science_Channel_Header::NAME, Science_Channel_Header::NAMES, Science_Channel_Header::Optical_Bench_Flexure_Temperature, Science_Channel_Header::Pixel_Bytes, Science_Channel_Header::Pixel_Data_Bytes, Science_Channel_Header::Pixels_Per_Line, Science_Channel_Header::Post_Binned_Lines, Science_Channel_Header::Post_Binned_Pixels_Per_Line, Science_Channel_Header::Powered_CPMMs_Count, Science_Channel_Header::Powered_CPMMs_Map, Science_Channel_Header::Readout_Pad_Bytes, Science_Channel_Header::Readout_Start_Time, Instrument::STIMULATOR_LEDS, Science_Channel_Header::TDI_Command_Received, Science_Channel_Header::TDI_Operation, Science_Channel_Header::time(), Science_Channel_Header::Total_Image_Bytes, Science_Channel_Header::Total_Lines_Collected, Science_Channel_Header::Total_Lines_Exposed, Science_Channel_Header::Transaction_ID, Science_Channel_Header::Trimming_Operation, Value::units(), and Data_Block::value_size_of().
Referenced by list_selections().
Aggregate * PVL_description | ( | ) | const |
Produces a PVL description of the component for a PDS label.
The description is an OBJECT that contains the basic PDS parameters required to describe a data product binary data object. The detailed description is referenced as being in an external file named with the value of FORMAT_FILENAME.
References Science_Channel_Header::FORMAT_FILENAME, Parser::get_parameters(), and Science_Channel_Header::ID.
bool is_valid | ( | ) | const [virtual] |
Tests if the component data is valid.
The Sync Element values must equal the expected SYNC constants and the internet_checksum should produce a zero value.
Implements Data_Component.
References Data_Component::internet_checksum(), Science_Channel_Header::SYNC, and Science_Channel_Header::Sync.
bool is_sync | ( | const void * | data_at ) | [static] |
Tests if some data contains a sync sequence.
The data must contain at least two 32-bit, MSB ordered, values each of which is a Science_Channel_Header::SYNC value for the test to be true.
data_at | A pointer to the data to be tested. |
void * sync_at | ( | void * | begin, |
void * | end | ||
) | [static] |
Searches a range of bytes for a Science Channel Header sync pattern.
N.B.: If the search range does not have at least at least enough bytes to contain the sync pattern (i.e. SYNC_BYTES) then no search can be done. The last byte sequence that will be checked starts at end - SYNC_BYTES. The bytes following this location may contain the beginning of a sync pattern, but this will not produce a match.
begin | A pointer to the beginning of the search range. |
end | A pointer to the end of the search range; i.e. the location immediately following the last byte in the search range. |
const char *const ID = "UA::HiRISE::Science_Channel_Header (1.54 2020/05/12 22:59:48)" [static] |
Class identification name with source code version and date.
Reimplemented from Data_Component.
Referenced by Science_Channel_Header::id(), main(), and Science_Channel_Header::PVL_description().
const char *const NAME = "Science Channel Header" [static] |
The component name.
Referenced by Science_Channel_Header::name(), and Science_Channel_Header::PVL().
const char * NAMES [static] |
The name of each Element.
Referenced by Science_Channel_Header::PVL(), and Observation::PVL_PDS().
const Index COMPONENT_BYTES = SCIENCE_CHANNEL_HEADER_BYTES [static] |
Total number of bytes in the Data_Block.
Referenced by Observation::components(), Observation::line(), and Observation::PVL_PDS().
const Index ARRAY_COUNTS [static] |
{ {Sync, 2}, {Alignment, 2}, {Expose_MRO_Time, 2}, {Expose_HiRISE_Time, 2}, {Analog_Power_On_Time, 2}, {Analog_Power_On_Start_Time, 2}, {Exposure_Start_Time, 2}, {Line_Time_Operation, 5}, {Pad_0, 8}, {Digital_Power_Operation, 5}, {Analog_Power_Operation, 5}, {Trimming_Operation, 5}, {TDI_Operation, 5}, {Line_Count_Operation, 5}, {Binning_Operation, 5}, {LUT_Operation, 20}, {Readout_Start_Time, 4}, {Channel_Readout_Command, CCD_CHANNELS}, {Channel_Readout_Response, CCD_CHANNELS}, {Pad_1, 12}, {Heater_Controls, (2 * CCDS)}, {Last_Command_Time, 2}, {Pad_2, 126}, {0,0} }
Data_Block array element value counts each keyed to an Element Index.
All values of an array element are the same size (the total size of the Element divided by the count of array entries). Any Element not listed here has only one value.
This list must be zero-terminated.
Expected Sync Element values.
Referenced by Science_Channel_Header::is_valid(), and main().
const int SYNC_BYTES = 2 * sizeof (SYNC) [static] |
The number of bytes in the sync pattern.
const u_int_32 FPGA_RESPONSE_CPMM_PWS_ENABLED_BIT_MASK = (1 << 22) [static] |
FPGA_Last_Response Element bit fields.
Referenced by Science_Channel_Header::FPGA_last_response_CPMM_PWS_enabled().
const u_int_32 FPGA_RESPONSE_TELEMETRY_GATHERING_BIT_MASK = (1 << 21) |
const u_int_32 FPGA_RESPONSE_FM_RELAY_PHB_CLOSED_BIT_MASK = (1 << 20) |
const u_int_32 FPGA_RESPONSE_FM_RELAY_PHA_CLOSED_BIT_MASK = (1 << 19) |
const u_int_32 FPGA_RESPONSE_FM_OVERHEATED_BIT_MASK = (1 << 18) |
Referenced by Science_Channel_Header::FPGA_last_response_FM_overheated().
const u_int_32 FPGA_RESPONSE_FM_MOVING_BIT_MASK = (1 << 17) |
Referenced by Science_Channel_Header::FPGA_last_response_FM_moving().
((1 << 16) | (1 << 15) | (1 << 14))
Referenced by Science_Channel_Header::FPGA_last_response_stim_LEDs_on().
const u_int_32 FPGA_RESPONSE_STIM_LEDS_BIT_MASK_SHIFT = 14 |
Referenced by Science_Channel_Header::FPGA_last_response_stim_LEDs_on().
const u_int_32 FPGA_RESPONSE_HEATERS_ON_BIT_MASK = 0x3FFF |
Referenced by Science_Channel_Header::FPGA_last_response_heaters_on().
The array of all Conversion_Coefficients.
const double CELSIUS_TO_KELVINS_OFFSET [static] |
Offset to be added to Celsius degrees to obtain Kelvins.
const char *const FORMAT_FILENAME = SCIENCE_CHANNEL_HEADER_FORMAT_FILE [static] |
The name of the external PDS format description file.
Referenced by Science_Channel_Header::PVL_description().