File: CamCfgMatrix.h

package info (click to toggle)
libapogee3 3.2%2B20221221183454-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 9,284 kB
  • sloc: cpp: 26,737; sh: 8; makefile: 3
file content (126 lines) | stat: -rw-r--r-- 3,632 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/*! 
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright(c) 2010 Apogee Instruments, Inc. 
*
* \brief this name space defines the structures and enums for configuration meta, vertical and horiztonal patter data, anything from the configuration matrix  
* 
*/ 


#ifndef CAMCFGMATRIX_INCLUDE_H__ 
#define CAMCFGMATRIX_INCLUDE_H__ 

#include <string>
#include <vector>
#include <stdint.h>

namespace CamCfg
{ 
    const uint16_t ID_NO_OP = 60000;

    enum ApnAdType 
    {
	    ApnAdType_None,
	    ApnAdType_Alta_Sixteen,
	    ApnAdType_Alta_Twelve,
	    ApnAdType_Ascent_Sixteen
    };

    struct APN_CAMERA_METADATA 
    {
        std::string Sensor;
        uint16_t CameraId;
        std::string CameraLine;
        std::string CameraModel;
        bool InterlineCCD;
        bool SupportsSerialA;
        bool SupportsSerialB;
        bool SensorTypeCCD;
        uint16_t TotalColumns;
        uint16_t ImagingColumns;
        uint16_t ClampColumns;
	    uint16_t PreRoiSkipColumns;
	    uint16_t PostRoiSkipColumns;
	    uint16_t OverscanColumns;
	    uint16_t TotalRows;
	    uint16_t ImagingRows;
	    uint16_t UnderscanRows;
	    uint16_t OverscanRows;
	    uint16_t VFlushBinning;
	    bool EnableSingleRowOffset;
	    uint16_t RowOffsetBinning;
	    bool HFlushDisable;
	    double ShutterCloseDelay;
	    double PixelSizeX;
	    double PixelSizeY;
	    bool Color;
	    double ReportedGainSixteenBit;
	    double MinSuggestedExpTime;
	    bool CoolingSupported;
	    bool RegulatedCoolingSupported;
	    double TempSetPoint;
	    uint16_t TempRampRateOne;
	    uint16_t TempRampRateTwo;
	    double TempBackoffPoint;
	    ApnAdType	 PrimaryADType;
	    ApnAdType	 AlternativeADType;
	    uint16_t PrimaryADLatency;
	    uint16_t AlternativeADLatency;
	    double IRPreflashTime;
        uint16_t AdCfg;
	    uint16_t DefaultGainLeft;
	    uint16_t DefaultOffsetLeft;
	    uint16_t DefaultGainRight;
	    uint16_t DefaultOffsetRight;
	    uint16_t DefaultRVoltage;
	    bool DefaultDataReduction;
        uint16_t VideoSubSample;
		uint16_t AmpCutoffDisable;
        uint16_t NumAdOutputs;
        bool  SupportsSingleDualReadoutSwitching;
        std::string VerticalPattern;
        std::string ClampPatternNormal;
        std::string SkipPatternNormal;
        std::string RoiPatternNormal;
        std::string ClampPatternFast;
        std::string SkipPatternFast;
        std::string RoiPatternFast;
        std::string VerticalPatternVideo;
        std::string ClampPatternVideo;
        std::string SkipPatternVideo;
        std::string RoiPatternVideo;
        std::string ClampPatternNormalDual;
        std::string SkipPatternNormalDual;
        std::string RoiPatternNormalDual;
        std::string ClampPatternFastDual;
        std::string SkipPatternFastDual;
        std::string RoiPatternFastDual;
    };

   struct APN_VPATTERN_FILE {
	    uint16_t Mask;
	    std::vector<uint16_t> PatternData;
    };

   struct APN_HPATTERN_FILE {
	    uint16_t Mask;
	    std::vector<uint16_t> RefPatternData;
	    std::vector< std::vector<uint16_t> > BinPatternData;
	    std::vector<uint16_t> SigPatternData;
    };

      
   void Clear( CamCfg::APN_CAMERA_METADATA & data );
   void Clear( CamCfg::APN_VPATTERN_FILE & data );
   void Clear( CamCfg::APN_HPATTERN_FILE & data );

   //type safe enum conversion function
   CamCfg::ApnAdType ConvertInt2ApnAdType(const int32_t value);
   std::string ApnAdType2Str( const CamCfg::ApnAdType in );

}

#endif