libapogee  3.0.2865
apogee/CameraStatusRegs.h
00001 
00013 #ifndef CAMERASTATUSREGS_INCLUDE_H__ 
00014 #define CAMERASTATUSREGS_INCLUDE_H__ 
00015 
00016 #include <string>
00017 #include <stdint.h>
00018 #include "DefDllExport.h"
00019 
00020 class DLL_EXPORT CameraStatusRegs 
00021 { 
00022     public: 
00023 #pragma pack( push, 1 )
00024 
00025     struct BasicStatus
00026     {
00028         uint16_t TempHeatSink;
00030         uint16_t TempCcd;
00032         uint16_t CoolerDrive;
00034         uint16_t InputVoltage;
00036         uint16_t TdiCounter;
00038         uint16_t SequenceCounter;
00040         uint16_t Status;
00042         uint16_t uFrame;  
00044         uint32_t FetchCount;    
00046         uint8_t  DataAvailFlag;
00047     };
00048 #pragma pack( pop )
00049 
00050 #pragma pack( push, 1 )
00051 
00052     struct AdvStatus
00053     {
00055         uint16_t TempHeatSink;
00057         uint16_t TempCcd;
00059         uint16_t CoolerDrive;
00061         uint16_t InputVoltage;
00063         uint16_t TdiCounter;
00065         uint16_t SequenceCounter;
00067         uint16_t Status;
00069         uint16_t uFrame; 
00071         uint16_t MostRecentFrame; 
00073         uint16_t ReadyFrame;
00075         uint16_t CurrentFrame;
00077         uint32_t  FetchCount;
00079         uint8_t  DataAvailFlag;
00080 
00081     };
00082 #pragma pack( pop )
00083 
00084         CameraStatusRegs();
00085         CameraStatusRegs(const CameraStatusRegs::AdvStatus & adv);
00086         CameraStatusRegs(const CameraStatusRegs::BasicStatus & basic);
00087         virtual ~CameraStatusRegs(); 
00088 
00089         uint16_t GetTempHeatSink() { return m_TempHeatSink; }
00090         uint16_t GetTempCcd() { return m_TempCcd; }
00091         uint16_t GetCoolerDrive() { return m_CoolerDrive; }
00092         uint16_t GetInputVoltage() { return m_InputVoltage; }
00093         uint16_t GetTdiCounter() { return m_TdiCounter; }
00094         uint16_t GetSequenceCounter() { return m_SequenceCounter; }
00095         uint16_t GetStatus() const { return m_Status; }
00096         uint16_t GetuFrame() { return m_uFrame; } 
00097         uint16_t GetMostRecentFrame() { return m_MostRecentFrame; }
00098         uint16_t GetReadyFrame() { return m_ReadyFrame; }
00099         uint16_t GetCurrentFrame() { return m_CurrentFrame ; }
00100         uint32_t  GetFetchCount() { return m_FetchCount; }   
00101         bool  GetDataAvailFlag() const { return ( (m_DataAvailFlag & 0x1) ? true:false); }
00102 
00103         void QueryStatusRegs( uint16_t &        StatusReg,
00104                                                       uint16_t &        HeatsinkTempReg,
00105                                                       uint16_t &        CcdTempReg,
00106                                                       uint16_t &        CoolerDriveReg,
00107                                                       uint16_t &        VoltageReg,
00108                                                       uint16_t &        TdiCounter,
00109                                                       uint16_t &        SequenceCounter,
00110                                                       uint16_t &        MostRecentFrame,
00111                                                       uint16_t &        ReadyFrame,
00112                                                       uint16_t &        CurrentFrame);
00113 
00114         std::string GetStatusStr() const;
00115 
00116         void Update(const CameraStatusRegs::AdvStatus & adv);
00117         void Update(const CameraStatusRegs::BasicStatus & basic);
00118 
00119     private:
00120         uint16_t m_TempHeatSink;
00121         uint16_t m_TempCcd;
00122         uint16_t m_CoolerDrive;
00123         uint16_t m_InputVoltage;
00124         uint16_t m_TdiCounter;
00125         uint16_t m_SequenceCounter;
00126         uint16_t m_Status;
00127         uint16_t m_uFrame; 
00128         uint16_t m_MostRecentFrame; 
00129         uint16_t m_ReadyFrame;
00130         uint16_t m_CurrentFrame;
00131         uint32_t  m_FetchCount;    
00132         uint8_t  m_DataAvailFlag;
00133 
00134 }; 
00135 
00136 #endif