diff options
Diffstat (limited to 'kstars/kstars/indi/apogee/ApnCamera.h')
-rw-r--r-- | kstars/kstars/indi/apogee/ApnCamera.h | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/kstars/kstars/indi/apogee/ApnCamera.h b/kstars/kstars/indi/apogee/ApnCamera.h new file mode 100644 index 00000000..b0e6af03 --- /dev/null +++ b/kstars/kstars/indi/apogee/ApnCamera.h @@ -0,0 +1,332 @@ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +// ApnCamera.h: interface for the CApnCamera class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_APNCAMERA_H__CF513996_359F_4103_BBA6_2C730AE2C301__INCLUDED_) +#define AFX_APNCAMERA_H__CF513996_359F_4103_BBA6_2C730AE2C301__INCLUDED_ + +#include "Apogee.h" +#include "Apn.h" +#include "FpgaRegs.h" + +#include "ApnCamData.h" +#include "ApnCamData_CCD3011HS.h" +#include "ApnCamData_CCD3011LS.h" +#include "ApnCamData_CCD4240HS.h" +#include "ApnCamData_CCD4240LS.h" +#include "ApnCamData_CCD4710HS.h" +#include "ApnCamData_CCD4710LS.h" +#include "ApnCamData_CCD4720HS.h" +#include "ApnCamData_CCD4720LS.h" +#include "ApnCamData_CCD5520HS.h" +#include "ApnCamData_CCD5520LS.h" +#include "ApnCamData_CCD5710HS.h" +#include "ApnCamData_CCD5710LS.h" +#include "ApnCamData_CCD7700HS.h" +#include "ApnCamData_CCD7700LS.h" +#include "ApnCamData_KAF0261E.h" +#include "ApnCamData_KAF0401E.h" +#include "ApnCamData_KAF1001E.h" +#include "ApnCamData_KAF1301E.h" +#include "ApnCamData_KAF1401E.h" +#include "ApnCamData_KAF1602E.h" +#include "ApnCamData_KAF16801E.h" +#include "ApnCamData_KAF3200E.h" +#include "ApnCamData_KAF4202.h" +#include "ApnCamData_KAF6303E.h" +#include "ApnCamData_TH7899.h" + +#include "ApnCamData_CCD4710LS2.h" +#include "ApnCamData_CCD4710LS3.h" +#include "ApnCamData_CCD4710LS4.h" +#include "ApnCamData_CCD4710LS5.h" + + +class CApnCamera +{ +public: + CApnCamera(); + ~CApnCamera(); + + bool InitDriver( unsigned long CamIdA, + unsigned short CamIdB, + unsigned long Option ); + + bool CloseDriver(); + long PreStartExpose( unsigned short BitsPerPixel ); + long PostStopExposure( bool DigitizeData ); + + bool GetImageData( unsigned short *pImageData, + unsigned short &Width, + unsigned short &Height, + unsigned long &Count ); + + bool GetLineData( unsigned short *pLineBuffer, + unsigned short &Size ); + + long Read( unsigned short reg, unsigned short& val ); + long Write( unsigned short reg, unsigned short val ); + + long WriteMultiSRMD( unsigned short reg, + unsigned short val[], + unsigned short count ); + + long WriteMultiMRMD( unsigned short reg[], + unsigned short val[], + unsigned short count ); + + long QueryStatusRegs( unsigned short& StatusReg, + unsigned short& HeatsinkTempReg, + unsigned short& CcdTempReg, + unsigned short& CoolerDriveReg, + unsigned short& VoltageReg, + unsigned short& TdiCounter, + unsigned short& SequenceCounter ); + + void SetNetworkTransferMode( Apn_NetworkMode TransferMode ); + + long InitDefaults(); + + bool Expose( double Duration, bool Light ); + bool BufferImage(char *bufferName ); + bool BufferDriftScan(char *bufferName, int delay, int rowCount, int nblock , int npipe); + + bool StopExposure( bool DigitizeData ); + + bool ResetSystem(); + bool PauseTimer( bool PauseState ); + + + unsigned short GetExposurePixelsH(); + unsigned short GetExposurePixelsV(); + + bool read_Present(); + unsigned short read_FirmwareVersion(); + + bool read_ShutterState(); + bool read_DisableShutter(); + void write_DisableShutter( bool DisableShutter ); + bool read_ForceShutterOpen(); + void write_ForceShutterOpen( bool ForceShutterOpen ); + bool read_ShutterAmpControl(); + void write_ShutterAmpControl( bool ShutterAmpControl ); + + bool read_ExternalIoReadout(); + void write_ExternalIoReadout( bool ExternalIoReadout ); + bool read_FastSequence(); + void write_FastSequence( bool FastSequence ); + + Apn_CameraMode read_CameraMode(); + void write_CameraMode( Apn_CameraMode CameraMode ); + + void write_DataBits( Apn_Resolution BitResolution ); + + Apn_Status read_ImagingStatus(); + + Apn_LedMode read_LedMode(); + void write_LedMode( Apn_LedMode LedMode ); + Apn_LedState read_LedState( unsigned short LedId ); + void write_LedState( unsigned short LedId, Apn_LedState LedState ); + + bool read_CoolerEnable(); + void write_CoolerEnable( bool CoolerEnable ); + Apn_CoolerStatus read_CoolerStatus(); + double read_CoolerSetPoint(); + void write_CoolerSetPoint( double SetPoint ); + double read_CoolerBackoffPoint(); + void write_CoolerBackoffPoint( double BackoffPoint ); + double read_CoolerDrive(); + double read_TempCCD(); + double read_TempHeatsink(); + Apn_FanMode read_FanMode(); + void write_FanMode( Apn_FanMode FanMode ); + + void write_RoiBinningH( unsigned short BinningH ); + void write_RoiBinningV( unsigned short BinningV ); + + void write_RoiPixelsV( unsigned short PixelsV ); + + void write_RoiStartY( unsigned short StartY ); + + unsigned short read_MaxBinningV(); + unsigned short read_OverscanColumns(); + + double read_ShutterStrobePosition(); + void write_ShutterStrobePosition( double Position ); + double read_ShutterStrobePeriod(); + void write_ShutterStrobePeriod( double Period ); + + double read_SequenceDelay(); + void write_SequenceDelay( double Delay ); + bool read_VariableSequenceDelay(); + void write_VariableSequenceDelay( bool VariableSequenceDelay ); + unsigned short read_ImageCount(); + void write_ImageCount( unsigned short Count ); + + unsigned short read_SequenceCounter(); + unsigned short read_TDICounter(); + unsigned short read_TDIRows(); + void write_TDIRows( unsigned short TdiRows ); + double read_TDIRate(); + void write_TDIRate( double TdiRate ); + unsigned short read_IoPortAssignment(); + void write_IoPortAssignment( unsigned short IoPortAssignment ); + unsigned short read_IoPortDirection(); + void write_IoPortDirection( unsigned short IoPortDirection ); + unsigned short read_IoPortData(); + void write_IoPortData( unsigned short IoPortData ); + + unsigned short read_TwelveBitGain(); + void write_TwelveBitGain( unsigned short TwelveBitGain ); + + double read_InputVoltage(); + long read_AvailableMemory(); + + double read_MaxExposureTime(); + + Apn_NetworkMode read_NetworkTransferMode(); + void write_NetworkTransferMode( Apn_NetworkMode TransferMode ); + + double read_TestLedBrightness(); + void write_TestLedBrightness( double TestLedBrightness ); + + + // Public helper function + bool ImageReady(); + void SignalImagingDone(); + + + // Variables + Apn_Interface m_CameraInterface; + + CApnCamData *m_ApnSensorInfo; + + unsigned short m_RoiStartX, m_RoiStartY; + unsigned short m_RoiPixelsH, m_RoiPixelsV; + unsigned short m_RoiBinningH, m_RoiBinningV; + + bool m_DigitizeOverscan; + Apn_Resolution m_DataBits; + +/* was private: */ + + // General helper functions + long LoadVerticalPattern(); + long LoadClampPattern(); + long LoadSkipPattern(); + long LoadRoiPattern( unsigned short Binning ); + + long WriteHorizontalPattern( APN_HPATTERN_FILE *Pattern, + unsigned short reg, + unsigned short binning ); + + long InitTwelveBitAD(); + long WriteTwelveBitOffset(); + + void UpdateGeneralStatus(); + + // Internal private variables + bool m_ResetVerticalArrays; + + // Camera state variables + Apn_CameraMode m_pvtCameraMode; + + Apn_NetworkMode m_pvtNetworkTransferMode; + + unsigned short m_pvtImageCount; + unsigned short m_pvtTDIRows; + double m_pvtTDIRate; + + double m_pvtSequenceDelay; + double m_pvtShutterStrobePosition; + double m_pvtShutterStrobePeriod; + + unsigned short m_pvtExposurePixelsH, m_pvtExposurePixelsV; + + unsigned short m_pvtTwelveBitGain; + + Apn_LedMode m_pvtLedMode; + Apn_LedState m_pvtLedStateA; + Apn_LedState m_pvtLedStateB; + + double m_pvtTestLedBrightness; + + bool m_pvtCoolerEnable; + Apn_FanMode m_pvtFanMode; + + double m_pvtCoolerBackoffPoint; + + Apn_CoolerStatus m_pvtCoolerStatus; + Apn_Status m_pvtImagingStatus; + bool m_pvtShutterState; + bool m_pvtImageInProgress; + bool m_pvtImageReady; + + unsigned short m_pvtStatusReg; + + double m_pvtCoolerDrive; + double m_pvtCurrentHeatsinkTemp; + double m_pvtCurrentCcdTemp; + + double m_pvtInputVoltage; + unsigned short m_pvtIoPortAssignment; + unsigned short m_pvtIoPortDirection; + +/* added USB/NET specifics */ + unsigned short m_pvtBitsPerPixel; + unsigned short m_pvtWidth; + unsigned short m_pvtHeight; + + +/* added sensor data mirrors */ + bool sensorInfo(); + char m_Sensor[20]; + char m_CameraModel[20]; + unsigned short m_CameraId; + bool m_InterlineCCD; + bool m_SupportsSerialA; + bool m_SupportsSerialB; + bool m_SensorTypeCCD; + unsigned short m_TotalColumns; + unsigned short m_ImagingColumns; + unsigned short m_ClampColumns; + unsigned short m_PreRoiSkipColumns; + unsigned short m_PostRoiSkipColumns; + unsigned short m_OverscanColumns; + unsigned short m_TotalRows; + unsigned short m_ImagingRows; + unsigned short m_UnderscanRows; + unsigned short m_OverscanRows; + unsigned short m_VFlushBinning; + bool m_HFlushDisable; + unsigned short m_ShutterCloseDelay; + double m_PixelSizeX; + double m_PixelSizeY; + bool m_Color; +// double m_ReportedGainTwelveBit; + double m_ReportedGainSixteenBit; + double m_MinSuggestedExpTime; +// unsigned short m_TempRegRate; + unsigned short m_TempRampRateOne; + unsigned short m_TempRampRateTwo; + unsigned short m_DefaultGainTwelveBit; + unsigned short m_DefaultOffsetTwelveBit; + unsigned short m_DefaultRVoltage; + +}; + +#endif // !defined(AFX_APNCAMERA_H__CF513996_359F_4103_BBA6_2C730AE2C301__INCLUDED_) + + + + + + |