diff --git a/build/unpack_moravian_sdk b/build/unpack_moravian_sdk index 47e6667a5..f8b8179b6 100755 --- a/build/unpack_moravian_sdk +++ b/build/unpack_moravian_sdk @@ -30,6 +30,10 @@ for f in gxeth.h gxusb.h; do done # libs -for f in gXeth.{dll,lib} gXusb.{dll,lib}; do - cp -p x86/$f "$SRC"/cameras/moravian/win/lib/ +for arch in x86 x64; do + lib_dir=${SRC}/cameras/moravian/win/${arch} + mkdir -p "$lib_dir" + for f in gXeth.{dll,lib} gXusb.{dll,lib}; do + cp -p "$arch/$f" "$lib_dir"/ + done done diff --git a/cameras/moravian/include/gxeth.h b/cameras/moravian/include/gxeth.h index ccae05e31..155f0baee 100644 --- a/cameras/moravian/include/gxeth.h +++ b/cameras/moravian/include/gxeth.h @@ -1,4 +1,4 @@ -// gxeth: Gx Camera Ethernet Adapter Driver +// gxeth: Cx/Gx Camera Ethernet Adapter Driver # pragma once # include "windows.h" @@ -10,77 +10,81 @@ #define WM_CAMERA_CONNECT 1034 #define WM_CAMERA_DISCONNECT 1035 -// GetBooleanParameter indexes -#define gbpConnected 0 -#define gbpSubFrame 1 -#define gbpReadModes 2 -#define gbpShutter 3 -#define gbpCooler 4 -#define gbpFan 5 -#define gbpFilters 6 -#define gbpGuide 7 -#define gbpWindowHeating 8 -#define gbpPreflash 9 -#define gbpAsymmetricBinning 10 -#define gbpMicrometerFilterOffsets 11 -#define gbpPowerUtilization 12 -#define gbpGain 13 -#define gbpElectronicShutter 14 -#define gbpGPS 16 -#define gbpContinuousExposures 17 -#define gbpTrigger 18 -#define gbpConfigured 127 -#define gbpRGB 128 -#define gbpCMY 129 -#define gbpCMYG 130 -#define gbpDebayerXOdd 131 -#define gbpDebayerYOdd 132 -#define gbpInterlaced 256 - -// GetIntegerParameter indexes -#define gipCameraId 0 -#define gipChipW 1 -#define gipChipD 2 -#define gipPixelW 3 -#define gipPixelD 4 -#define gipMaxBinningX 5 -#define gipMaxBinningY 6 -#define gipReadModes 7 -#define gipFilters 8 -#define gipMinimalExposure 9 -#define gipMaximalExposure 10 -#define gipMaximalMoveTime 11 -#define gipDefaultReadMode 12 -#define gipPreviewReadMode 13 -#define gipMaxWindowHeating 14 -#define gipMaxFan 15 -#define gipMaxGain 16 -#define gipMaxPossiblePixelValue 17 - -#define gipFirmwareMajor 128 -#define gipFirmwareMinor 129 -#define gipFirmwareBuild 130 -#define gipDriverMajor 131 -#define gipDriverMinor 132 -#define gipDriverBuild 133 -#define gipFlashMajor 134 -#define gipFlashMinor 135 -#define gipFlashBuild 136 - -// GetStringParameter indexes -#define gspCameraDescription 0 -#define gspManufacturer 1 -#define gspCameraSerial 2 -#define gspChipDescription 3 - -// GetValue indexes -#define gvChipTemperature 0 -#define gvHotTemperature 1 -#define gvCameraTemperature 2 -#define gvEnvironmentTemperature 3 -#define gvSupplyVoltage 10 -#define gvPowerUtilization 11 -#define gvADCGain 20 +// NOTE legacy index prefixes used 3 letters (gbpXXXX, gipXXXX, gspXXXX), following the original function name GetBooleanParameneter, ... +// cameraGetBoolean() indexes +#define gbConnected 0 +#define gbSubFrame 1 +#define gbReadModes 2 +#define gbShutter 3 +#define gbCooler 4 +#define gbFan 5 +#define gbFilters 6 +#define gbGuide 7 +#define gbWindowHeating 8 +#define gbPreflash 9 +#define gbAsymmetricBinning 10 +#define gbMicrometerFilterOffsets 11 +#define gbPowerUtilization 12 +#define gbGain 13 +#define gbElectronicShutter 14 +#define gbGPS 16 +#define gbContinuousExposures 17 +#define gbTrigger 18 + +#define gbConfigured 127 +#define gbRGB 128 +#define gbCMY 129 +#define gbCMYG 130 +#define gbDebayerXOdd 131 +#define gbDebayerYOdd 132 +#define gbInterlaced 256 + +// cameraGetInteger() indexes +#define giCameraId 0 +#define giChipW 1 +#define giChipD 2 +#define giPixelW 3 +#define giPixelD 4 +#define giMaxBinningX 5 +#define giMaxBinningY 6 +#define giReadModes 7 +#define giFilters 8 +#define giMinimalExposure 9 +#define giMaximalExposure 10 +#define giMaximalMoveTime 11 +#define giDefaultReadMode 12 +#define giPreviewReadMode 13 +#define giMaxWindowHeating 14 +#define giMaxFan 15 +#define giMaxGain 16 +#define giMaxPossiblePixelValue 17 +#define giLineTime 18 +#define giBiasPixelValue 19 + +#define giFirmwareMajor 128 +#define giFirmwareMinor 129 +#define giFirmwareBuild 130 +#define giDriverMajor 131 +#define giDriverMinor 132 +#define giDriverBuild 133 +#define giFlashMajor 134 +#define giFlashMinor 135 +#define giFlashBuild 136 + +// GetString() indexes +#define gsCameraDescription 0 +#define gsManufacturer 1 +#define gsCameraSerial 2 +#define gsChipDescription 3 + +// GetValue() indexes +#define gvChipTemperature 0 +#define gvHotTemperature 1 +#define gvCameraTemperature 2 +#define gvEnvironmentTemperature 3 +#define gvSupplyVoltage 10 +#define gvPowerUtilization 11 +#define gvADCGain 20 // CheckVersionMode values #define cvNever 0 @@ -103,7 +107,59 @@ typedef void (__cdecl *TEnumerateCallback)( CARDINAL ); struct CCamera; -extern "C" EXPORT_ void __cdecl Enumerate( void (__cdecl *CallbackProc)(CARDINAL )); +// current "camera" prefixed API functions + +extern "C" EXPORT_ void __cdecl cameraEnumerate( void (__cdecl *CallbackProc)( CARDINAL )); +extern "C" EXPORT_ CCamera *__cdecl cameraInitialize( CARDINAL Id); +extern "C" EXPORT_ void __cdecl cameraConfigure( CCamera *PCamera, HWND ParentHWND ); +extern "C" EXPORT_ void __cdecl cameraConfigure2( CARDINAL IPAddress_HIGH, CHAR *IPAddress, CARDINAL CheckVersionMode ); +extern "C" EXPORT_ void __cdecl cameraRelease( CCamera *PCamera ); + +extern "C" EXPORT_ void __cdecl cameraRegisterNotifyHWND( CCamera *PCamera, HWND NotifyHWND ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetBoolean( CCamera *PCamera, CARDINAL Index, BOOLEAN *Boolean ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetInteger( CCamera *PCamera, CARDINAL Index, CARDINAL *Num ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetString( CCamera *PCamera, CARDINAL Index, CARDINAL String_HIGH, CHAR *String ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetValue( CCamera *PCamera, CARDINAL Index, REAL *Value) ; + +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetTemperature( CCamera *PCamera, REAL Temperature ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetTemperatureRamp( CCamera *PCamera, REAL TemperatureRamp ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetBinning( CCamera *PCamera, CARDINAL x, CARDINAL y ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraStartExposure( CCamera *PCamera, LONGREAL ExpTime, BOOLEAN UseShutter, INTEGER x, INTEGER y, INTEGER w, INTEGER d ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraStartExposureTrigger( CCamera *PCamera, LONGREAL ExpTime, BOOLEAN UseShutter, INTEGER x, INTEGER y, INTEGER w, INTEGER d ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraAbortExposure( CCamera *PCamera, BOOLEAN DownloadFlag ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraImageReady( CCamera *PCamera, BOOLEAN *Ready ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraReadImage( CCamera *PCamera, CARDINAL BufferLen, ADDRESS BufferAdr ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraReadImageExposure( CCamera *PCamera, CARDINAL BufferLen, ADDRESS BufferAdr ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraOpen( CCamera *PCamera ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraClose( CCamera *PCamera ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraEnumerateReadModes( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetReadMode( CCamera *PCamera, CARDINAL mode ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetGain( CCamera *PCamera, CARDINAL gain ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraConvertGain( CCamera *PCamera, CARDINAL gain, LONGREAL *dB, LONGREAL *times ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraEnumerateFilters( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description, CARDINAL *Color ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraEnumerateFilters2( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description, CARDINAL *Color, INTEGER *Offset ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetFilter( CCamera *PCamera, CARDINAL index ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraReinitFilterWheel( CCamera *PCamera ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetFan( CCamera *PCamera, CARD8 Speed ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetWindowHeating( CCamera *PCamera, CARD8 Heating ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetPreflash( CCamera *PCamera, LONGREAL PreflashTime, CARDINAL ClearNum ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraMoveTelescope( CCamera *PCamera, INT16 RADurationMs, INT16 DecDurationMs ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraMoveInProgress( CCamera *PCamera, BOOLEAN *Moving ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetImageTimeStamp( CCamera PCamera, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetGPSData( CCamera PCamera, LONGREAL *Lat, LONGREAL *Lon, LONGREAL *MSL, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second, CARDINAL *Satellites, BOOLEAN *Fix ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetGPSData2( CCamera PCamera, LONGREAL *Lat, LONGREAL *Lon, LONGREAL *MSL, LONGREAL *GeoidSep, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second, CARDINAL *Satellites, BOOLEAN *Fix ); + +extern "C" EXPORT_ void __cdecl cameraGetLastErrorString( CCamera *PCamera, CARDINAL ErrorString_HIGH, CHAR *ErrorString ); + +// backward-compatible deprecated API functions + +extern "C" EXPORT_ void __cdecl Enumerate( void (__cdecl *CallbackProc)( CARDINAL )); extern "C" EXPORT_ CCamera *__cdecl Initialize( CARDINAL Id); extern "C" EXPORT_ void __cdecl Configure( CCamera *PCamera, HWND ParentHWND ); extern "C" EXPORT_ void __cdecl Configure2( CARDINAL IPAddress_HIGH, CHAR *IPAddress, CARDINAL CheckVersionMode ); @@ -137,6 +193,7 @@ extern "C" EXPORT_ BOOLEAN __cdecl ConvertGain( CCamera *PCamera, CARDINAL gain extern "C" EXPORT_ BOOLEAN __cdecl EnumerateFilters( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description, CARDINAL *Color ); extern "C" EXPORT_ BOOLEAN __cdecl EnumerateFilters2( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description, CARDINAL *Color, INTEGER *Offset ); extern "C" EXPORT_ BOOLEAN __cdecl SetFilter( CCamera *PCamera, CARDINAL index ); +extern "C" EXPORT_ BOOLEAN __cdecl ReinitFilterWheel( CCamera *PCamera ); extern "C" EXPORT_ BOOLEAN __cdecl SetFan( CCamera *PCamera, CARD8 Speed ); extern "C" EXPORT_ BOOLEAN __cdecl SetWindowHeating( CCamera *PCamera, CARD8 Heating ); extern "C" EXPORT_ BOOLEAN __cdecl SetPreflash( CCamera *PCamera, LONGREAL PreflashTime, CARDINAL ClearNum ); @@ -146,6 +203,7 @@ extern "C" EXPORT_ BOOLEAN __cdecl MoveInProgress( CCamera *PCamera, BOOLEAN *M extern "C" EXPORT_ BOOLEAN __cdecl GetImageTimeStamp( CCamera PCamera, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second ); extern "C" EXPORT_ BOOLEAN __cdecl GetGPSData( CCamera PCamera, LONGREAL *Lat, LONGREAL *Lon, LONGREAL *MSL, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second, CARDINAL *Satellites, BOOLEAN *Fix ); +extern "C" EXPORT_ BOOLEAN __cdecl GetGPSData2( CCamera PCamera, LONGREAL *Lat, LONGREAL *Lon, LONGREAL *MSL, LONGREAL *GeoidSep, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second, CARDINAL *Satellites, BOOLEAN *Fix ); extern "C" EXPORT_ void __cdecl GetLastErrorString( CCamera *PCamera, CARDINAL ErrorString_HIGH, CHAR *ErrorString ); diff --git a/cameras/moravian/include/gxusb.h b/cameras/moravian/include/gxusb.h index 0852265e8..d35b9c68d 100644 --- a/cameras/moravian/include/gxusb.h +++ b/cameras/moravian/include/gxusb.h @@ -1,4 +1,4 @@ -// gxusb: Gx Camera USB Driver +// gxusb: Cx/Gx Camera USB Driver # pragma once # include "windows.h" @@ -10,77 +10,81 @@ #define WM_CAMERA_CONNECT 1034 #define WM_CAMERA_DISCONNECT 1035 -// GetBooleanParameter indexes -#define gbpConnected 0 -#define gbpSubFrame 1 -#define gbpReadModes 2 -#define gbpShutter 3 -#define gbpCooler 4 -#define gbpFan 5 -#define gbpFilters 6 -#define gbpGuide 7 -#define gbpWindowHeating 8 -#define gbpPreflash 9 -#define gbpAsymmetricBinning 10 -#define gbpMicrometerFilterOffsets 11 -#define gbpPowerUtilization 12 -#define gbpGain 13 -#define gbpElectronicShutter 14 -#define gbpGPS 16 -#define gbpContinuousExposures 17 -#define gbpTrigger 18 -#define gbpConfigured 127 -#define gbpRGB 128 -#define gbpCMY 129 -#define gbpCMYG 130 -#define gbpDebayerXOdd 131 -#define gbpDebayerYOdd 132 -#define gbpInterlaced 256 - -// GetIntegerParameter indexes -#define gipCameraId 0 -#define gipChipW 1 -#define gipChipD 2 -#define gipPixelW 3 -#define gipPixelD 4 -#define gipMaxBinningX 5 -#define gipMaxBinningY 6 -#define gipReadModes 7 -#define gipFilters 8 -#define gipMinimalExposure 9 -#define gipMaximalExposure 10 -#define gipMaximalMoveTime 11 -#define gipDefaultReadMode 12 -#define gipPreviewReadMode 13 -#define gipMaxWindowHeating 14 -#define gipMaxFan 15 -#define gipMaxGain 16 -#define gipMaxPossiblePixelValue 17 - -#define gipFirmwareMajor 128 -#define gipFirmwareMinor 129 -#define gipFirmwareBuild 130 -#define gipDriverMajor 131 -#define gipDriverMinor 132 -#define gipDriverBuild 133 -#define gipFlashMajor 134 -#define gipFlashMinor 135 -#define gipFlashBuild 136 - -// GetStringParameter indexes -#define gspCameraDescription 0 -#define gspManufacturer 1 -#define gspCameraSerial 2 -#define gspChipDescription 3 - -// GetValue indexes -#define gvChipTemperature 0 -#define gvHotTemperature 1 -#define gvCameraTemperature 2 -#define gvEnvironmentTemperature 3 -#define gvSupplyVoltage 10 -#define gvPowerUtilization 11 -#define gvADCGain 20 +// NOTE legacy index prefixes used 3 letters (gbpXXXX, gipXXXX, gspXXXX), following the original function name GetBooleanParameneter, ... +// cameraGetBoolean() indexes +#define gbConnected 0 +#define gbSubFrame 1 +#define gbReadModes 2 +#define gbShutter 3 +#define gbCooler 4 +#define gbFan 5 +#define gbFilters 6 +#define gbGuide 7 +#define gbWindowHeating 8 +#define gbPreflash 9 +#define gbAsymmetricBinning 10 +#define gbMicrometerFilterOffsets 11 +#define gbPowerUtilization 12 +#define gbGain 13 +#define gbElectronicShutter 14 +#define gbGPS 16 +#define gbContinuousExposures 17 +#define gbTrigger 18 + +#define gbConfigured 127 +#define gbRGB 128 +#define gbCMY 129 +#define gbCMYG 130 +#define gbDebayerXOdd 131 +#define gbDebayerYOdd 132 +#define gbInterlaced 256 + +// cameraGetInteger() indexes +#define giCameraId 0 +#define giChipW 1 +#define giChipD 2 +#define giPixelW 3 +#define giPixelD 4 +#define giMaxBinningX 5 +#define giMaxBinningY 6 +#define giReadModes 7 +#define giFilters 8 +#define giMinimalExposure 9 +#define giMaximalExposure 10 +#define giMaximalMoveTime 11 +#define giDefaultReadMode 12 +#define giPreviewReadMode 13 +#define giMaxWindowHeating 14 +#define giMaxFan 15 +#define giMaxGain 16 +#define giMaxPossiblePixelValue 17 +#define giLineTime 18 +#define giBiasPixelValue 19 + +#define giFirmwareMajor 128 +#define giFirmwareMinor 129 +#define giFirmwareBuild 130 +#define giDriverMajor 131 +#define giDriverMinor 132 +#define giDriverBuild 133 +#define giFlashMajor 134 +#define giFlashMinor 135 +#define giFlashBuild 136 + +// GetString() indexes +#define gsCameraDescription 0 +#define gsManufacturer 1 +#define gsCameraSerial 2 +#define gsChipDescription 3 + +// GetValue() indexes +#define gvChipTemperature 0 +#define gvHotTemperature 1 +#define gvCameraTemperature 2 +#define gvEnvironmentTemperature 3 +#define gvSupplyVoltage 10 +#define gvPowerUtilization 11 +#define gvADCGain 20 namespace gXusb { @@ -96,7 +100,60 @@ typedef void * ADDRESS; struct CCamera; -extern "C" EXPORT_ void __cdecl Enumerate( void (__cdecl *CallbackProc)(CARDINAL) ); +// current "camera" prefixed API functions + +extern "C" EXPORT_ void __cdecl cameraEnumerate( void (__cdecl *CallbackProc)( CARDINAL)); +extern "C" EXPORT_ CCamera *__cdecl cameraInitialize( CARDINAL Id ); +extern "C" EXPORT_ void __cdecl cameraRelease( CCamera *PCamera ); + +extern "C" EXPORT_ void __cdecl cameraRegisterNotifyHWND( CCamera *PCamera, HWND NotifyHWND ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetBoolean( CCamera *PCamera, CARDINAL Index, BOOLEAN *Boolean ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetInteger( CCamera *PCamera, CARDINAL Index, CARDINAL *Num ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetString( CCamera *PCamera, CARDINAL Index, CARDINAL String_HIGH, CHAR *String ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetValue( CCamera *PCamera, CARDINAL Index, REAL *Value) ; + +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetTemperature( CCamera *PCamera, REAL Temperature ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetBinning( CCamera *PCamera, CARDINAL x, CARDINAL y ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraClearSensor( CCamera *PCamera ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraOpen( CCamera *PCamera ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraClose( CCamera *PCamera ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraBeginExposure( CCamera *PCamera, BOOLEAN UseShutter ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraEndExposure( CCamera *PCamera, BOOLEAN UseShutter, BOOLEAN AbortData ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetImage( CCamera *PCamera, INTEGER x, INTEGER y, INTEGER w, INTEGER d, CARDINAL BufferLen, ADDRESS BufferAdr ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetImage8b( CCamera *PCamera, INTEGER x, INTEGER y, INTEGER w, INTEGER d, CARDINAL BufferLen, ADDRESS BufferAdr ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetImage16b( CCamera *PCamera, INTEGER x, INTEGER y, INTEGER w, INTEGER d, CARDINAL BufferLen, ADDRESS BufferAdr ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetImageExposure( CCamera *PCamera, LONGREAL ExpTime, BOOLEAN UseShutter, INTEGER x, INTEGER y, INTEGER w, INTEGER d, CARDINAL BufferLen, ADDRESS BufferAdr ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetImageExposure8b( CCamera *PCamera, LONGREAL ExpTime, BOOLEAN UseShutter, INTEGER x, INTEGER y, INTEGER w, INTEGER d, CARDINAL BufferLen, ADDRESS BufferAdr ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetImageExposure16b( CCamera *PCamera, LONGREAL ExpTime, BOOLEAN UseShutter, INTEGER x, INTEGER y, INTEGER w, INTEGER d, CARDINAL BufferLen, ADDRESS BufferAdr ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraAdjustSubFrame( CCamera *PCamera, INTEGER *x, INTEGER *y, INTEGER *w, INTEGER *d ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraEnumerateReadModes( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetReadMode( CCamera *PCamera, CARDINAL mode ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetGain( CCamera *PCamera, CARDINAL gain ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraConvertGain( CCamera *PCamera, CARDINAL gain, LONGREAL *dB, LONGREAL *times ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraEnumerateFilters( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description, CARDINAL *Color ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraEnumerateFilters2( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description, CARDINAL *Color, INTEGER *Offset ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetFilter( CCamera *PCamera, CARDINAL index ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraReinitFilterWheel( CCamera *PCamera ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetFan( CCamera *PCamera, CARD8 Speed ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetWindowHeating( CCamera *PCamera, CARD8 Heating ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraSetPreflash( CCamera *PCamera, LONGREAL PreflashTime, CARDINAL ClearNum ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetImageTimeStamp( CCamera PCamera, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetGPSData( CCamera PCamera, LONGREAL *Lat, LONGREAL *Lon, LONGREAL *MSL, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second, CARDINAL *Satellites, BOOLEAN *Fix ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraGetGPSData2( CCamera PCamera, LONGREAL *Lat, LONGREAL *Lon, LONGREAL *MSL, LONGREAL *GeoidSep, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second, CARDINAL *Satellites, BOOLEAN *Fix ); + +extern "C" EXPORT_ BOOLEAN __cdecl cameraMoveTelescope( CCamera *PCamera, INT16 RADurationMs, INT16 DecDurationMs ); +extern "C" EXPORT_ BOOLEAN __cdecl cameraMoveInProgress( CCamera *PCamera, BOOLEAN *Moving ); + +extern "C" EXPORT_ void __cdecl cameraGetLastErrorString( CCamera *PCamera, CARDINAL ErrorString_HIGH, CHAR *ErrorString ); + +// backward-compatible deprecated API functions + +extern "C" EXPORT_ void __cdecl Enumerate( void (__cdecl *CallbackProc)( CARDINAL)); extern "C" EXPORT_ CCamera *__cdecl Initialize( CARDINAL Id ); extern "C" EXPORT_ void __cdecl Release( CCamera *PCamera ); @@ -131,10 +188,15 @@ extern "C" EXPORT_ BOOLEAN __cdecl ConvertGain( CCamera *PCamera, CARDINAL gain extern "C" EXPORT_ BOOLEAN __cdecl EnumerateFilters( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description, CARDINAL *Color ); extern "C" EXPORT_ BOOLEAN __cdecl EnumerateFilters2( CCamera *PCamera, CARDINAL Index, CARDINAL Description_HIGH, CHAR *Description, CARDINAL *Color, INTEGER *Offset ); extern "C" EXPORT_ BOOLEAN __cdecl SetFilter( CCamera *PCamera, CARDINAL index ); +extern "C" EXPORT_ BOOLEAN __cdecl ReinitFilterWheel( CCamera *PCamera ); extern "C" EXPORT_ BOOLEAN __cdecl SetFan( CCamera *PCamera, CARD8 Speed ); extern "C" EXPORT_ BOOLEAN __cdecl SetWindowHeating( CCamera *PCamera, CARD8 Heating ); extern "C" EXPORT_ BOOLEAN __cdecl SetPreflash( CCamera *PCamera, LONGREAL PreflashTime, CARDINAL ClearNum ); +extern "C" EXPORT_ BOOLEAN __cdecl GetImageTimeStamp( CCamera PCamera, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second ); +extern "C" EXPORT_ BOOLEAN __cdecl GetGPSData( CCamera PCamera, LONGREAL *Lat, LONGREAL *Lon, LONGREAL *MSL, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second, CARDINAL *Satellites, BOOLEAN *Fix ); +extern "C" EXPORT_ BOOLEAN __cdecl GetGPSData2( CCamera PCamera, LONGREAL *Lat, LONGREAL *Lon, LONGREAL *MSL, LONGREAL *GeoidSep, INTEGER *Year, INTEGER *Month, INTEGER *Day, INTEGER *Hour, INTEGER *Minute, LONGREAL *Second, CARDINAL *Satellites, BOOLEAN *Fix ); + extern "C" EXPORT_ BOOLEAN __cdecl MoveTelescope( CCamera *PCamera, INT16 RADurationMs, INT16 DecDurationMs ); extern "C" EXPORT_ BOOLEAN __cdecl MoveInProgress( CCamera *PCamera, BOOLEAN *Moving ); diff --git a/cameras/moravian/win/x64/gXeth.dll b/cameras/moravian/win/x64/gXeth.dll new file mode 100644 index 000000000..92c2716e7 Binary files /dev/null and b/cameras/moravian/win/x64/gXeth.dll differ diff --git a/cameras/moravian/win/x64/gXeth.lib b/cameras/moravian/win/x64/gXeth.lib new file mode 100644 index 000000000..e714fab02 Binary files /dev/null and b/cameras/moravian/win/x64/gXeth.lib differ diff --git a/cameras/moravian/win/x64/gXusb.dll b/cameras/moravian/win/x64/gXusb.dll new file mode 100644 index 000000000..3672c045f Binary files /dev/null and b/cameras/moravian/win/x64/gXusb.dll differ diff --git a/cameras/moravian/win/x64/gXusb.lib b/cameras/moravian/win/x64/gXusb.lib new file mode 100644 index 000000000..5f2f15912 Binary files /dev/null and b/cameras/moravian/win/x64/gXusb.lib differ diff --git a/cameras/moravian/win/x86/gXeth.dll b/cameras/moravian/win/x86/gXeth.dll index ca7bbb9a4..2a5af820e 100644 Binary files a/cameras/moravian/win/x86/gXeth.dll and b/cameras/moravian/win/x86/gXeth.dll differ diff --git a/cameras/moravian/win/x86/gXeth.lib b/cameras/moravian/win/x86/gXeth.lib index 3681b1925..ccc37a630 100644 Binary files a/cameras/moravian/win/x86/gXeth.lib and b/cameras/moravian/win/x86/gXeth.lib differ diff --git a/cameras/moravian/win/x86/gXusb.dll b/cameras/moravian/win/x86/gXusb.dll index 5b82e454f..729ad41a6 100644 Binary files a/cameras/moravian/win/x86/gXusb.dll and b/cameras/moravian/win/x86/gXusb.dll differ diff --git a/cameras/moravian/win/x86/gXusb.lib b/cameras/moravian/win/x86/gXusb.lib index d71bf17fc..c1ff2c570 100644 Binary files a/cameras/moravian/win/x86/gXusb.lib and b/cameras/moravian/win/x86/gXusb.lib differ diff --git a/src/cam_moravian.cpp b/src/cam_moravian.cpp index ed4563056..c58f828cd 100644 --- a/src/cam_moravian.cpp +++ b/src/cam_moravian.cpp @@ -143,7 +143,7 @@ struct MCam return dflt; } - wxString Serial() { return StrParam(gspCameraSerial, wxString::Format("ID%d", IntParam(gipCameraId, 1))); } + wxString Serial() { return StrParam(gsCameraSerial, wxString::Format("ID%d", IntParam(giCameraId, 1))); } float GetValue(gXusb::CARDINAL idx, float dflt = 0.f) { @@ -266,7 +266,7 @@ struct MCam return ok; } - wxSize ChipSize() { return wxSize(IntParam(gipChipW), IntParam(gipChipD)); } + wxSize ChipSize() { return wxSize(IntParam(giChipW), IntParam(giChipD)); } bool CaptureSync(void *buf, unsigned int size, unsigned int duration, wxByte bpp, const wxRect& frame) { @@ -490,13 +490,13 @@ void MoravianCameraDlg::LoadCamInfo() int sel_mode = pConfig->Profile.GetInt("/camera/moravian/read_mode", -1); if (sel_mode == -1) { - int dflt_read_mode = cam.IntParam(gipDefaultReadMode); + int dflt_read_mode = cam.IntParam(giDefaultReadMode); sel_mode = dflt_read_mode; } wxByte bpp = m_bpp8->GetValue() ? 8 : 16; - unsigned int exp_dur = (cam.IntParam(gipMinimalExposure) + 1000 - 1) / 1000; // ns to ms, rounded up + unsigned int exp_dur = (cam.IntParam(giMinimalExposure) + 1000 - 1) / 1000; // ns to ms, rounded up wxSize chip_size(cam.ChipSize()); @@ -532,7 +532,7 @@ void MoravianCameraDlg::LoadCamInfo() m_modeNames->SetSelection(sel_idx); - if (cam.BoolParam(gbpFan) && cam.IntParam(gipMaxFan) == 1) + if (cam.BoolParam(gbFan) && cam.IntParam(giMaxFan) == 1) { m_fan->Enable(); m_fan->SetValue(pConfig->Profile.GetInt("/camera/moravian/fan_speed", 1) ? true : false); @@ -583,7 +583,7 @@ bool MoravianCamera::EnumCameras(wxArrayString& names, wxArrayString& ids) if (!cam.Initialize(id)) continue; - wxString desc = cam.StrParam(gspCameraDescription, _("unknown")).Trim(); + wxString desc = cam.StrParam(gsCameraDescription, _("unknown")).Trim(); wxString serial = cam.Serial(); wxString name = wxString::Format("%s [%s]", desc, serial); @@ -605,40 +605,40 @@ bool MoravianCamera::Connect(const wxString& camId) return CamConnectFailed(err); } - int drv_major = m_cam.IntParam(gipDriverMajor); - int drv_minor = m_cam.IntParam(gipDriverMinor); - int drv_build = m_cam.IntParam(gipDriverBuild); + int drv_major = m_cam.IntParam(giDriverMajor); + int drv_minor = m_cam.IntParam(giDriverMinor); + int drv_build = m_cam.IntParam(giDriverBuild); - int fw_major = m_cam.IntParam(gipFirmwareMajor); - int fw_minor = m_cam.IntParam(gipFirmwareMinor); - int fw_build = m_cam.IntParam(gipFirmwareBuild); + int fw_major = m_cam.IntParam(giFirmwareMajor); + int fw_minor = m_cam.IntParam(giFirmwareMinor); + int fw_build = m_cam.IntParam(giFirmwareBuild); - int flash_major = m_cam.IntParam(gipFlashMajor); - int flash_minor = m_cam.IntParam(gipFlashMinor); - int flash_build = m_cam.IntParam(gipFlashBuild); + int flash_major = m_cam.IntParam(giFlashMajor); + int flash_minor = m_cam.IntParam(giFlashMinor); + int flash_build = m_cam.IntParam(giFlashBuild); Debug.Write(wxString::Format("MVN: Driver %d.%d.%d | Firmware %d.%d.%d | Flash %d.%d.%d\n", drv_major, drv_minor, drv_build, fw_major, fw_minor, fw_build, flash_major, flash_minor, flash_build)); - Name = m_cam.StrParam(gspCameraDescription, _T("Moravian Camera")); + Name = m_cam.StrParam(gsCameraDescription, _T("Moravian Camera")); - bool connected = m_cam.BoolParam(gbpConnected); + bool connected = m_cam.BoolParam(gbConnected); - HasSubframes = m_cam.BoolParam(gbpSubFrame); + HasSubframes = m_cam.BoolParam(gbSubFrame); - bool has_read_modes = m_cam.BoolParam(gbpReadModes); + bool has_read_modes = m_cam.BoolParam(gbReadModes); - bool has_shutter = m_cam.BoolParam(gbpShutter); + bool has_shutter = m_cam.BoolParam(gbShutter); HasShutter = false; // TODO: handle camera with shutter - HasCooler = m_cam.BoolParam(gbpCooler); - bool has_fan = m_cam.BoolParam(gbpFan); + HasCooler = m_cam.BoolParam(gbCooler); + bool has_fan = m_cam.BoolParam(gbFan); Debug.Write(wxString::Format("MVN: HasShutter: %d HasCooler: %d HasFan: %d\n", has_shutter, HasCooler, has_fan)); if (has_fan) { - int max_fan = m_cam.IntParam(gipMaxFan); + int max_fan = m_cam.IntParam(giMaxFan); int speed = pConfig->Profile.GetInt("/camera/moravian/fan_speed", 1); if (speed > max_fan) @@ -649,23 +649,23 @@ bool MoravianCamera::Connect(const wxString& camId) Debug.Write(wxString::Format("MVN: set fan speed %u / %u\n", speed, max_fan)); } - m_hasGuideOutput = m_cam.BoolParam(gbpGuide); - m_maxMoveMs = m_hasGuideOutput ? m_cam.IntParam(gipMaximalMoveTime) : 0; + m_hasGuideOutput = m_cam.BoolParam(gbGuide); + m_maxMoveMs = m_hasGuideOutput ? m_cam.IntParam(giMaximalMoveTime) : 0; Debug.Write(wxString::Format("MVN: CanPulseGuide: %s MaxMove: %d\n", m_hasGuideOutput ? "yes" : "no", m_maxMoveMs)); - bool rgb = m_cam.BoolParam(gbpRGB); - bool cmy = m_cam.BoolParam(gbpCMY); - bool cmyg = m_cam.BoolParam(gbpCMYG); + bool rgb = m_cam.BoolParam(gbRGB); + bool cmy = m_cam.BoolParam(gbCMY); + bool cmyg = m_cam.BoolParam(gbCMYG); HasBayer = rgb || cmy || cmyg; Debug.Write(wxString::Format("MVN: IsColorCam = %d (rgb:%d cmy:%d cmyg:%d)\n", HasBayer, rgb, cmy, cmyg)); - int pxwidth = m_cam.IntParam(gipPixelW); // nm - int pxheight = m_cam.IntParam(gipPixelD); // nm + int pxwidth = m_cam.IntParam(giPixelW); // nm + int pxheight = m_cam.IntParam(giPixelD); // nm m_devicePixelSize = (double) std::min(pxwidth, pxheight) / 1000.; // microns - int maxbinx = m_cam.IntParam(gipMaxBinningX); - int maxbiny = m_cam.IntParam(gipMaxBinningY); + int maxbinx = m_cam.IntParam(giMaxBinningX); + int maxbiny = m_cam.IntParam(giMaxBinningY); MaxHwBinning = std::min(maxbinx, maxbiny); @@ -689,16 +689,16 @@ bool MoravianCamera::Connect(const wxString& camId) m_buffer_size = m_maxSize.x * m_maxSize.y * 2; // big enough for 16 bpp, even if we only use 8 bpp m_buffer = ::malloc(m_buffer_size); - int max_exp_ms = m_cam.IntParam(gipMaximalExposure); + int max_exp_ms = m_cam.IntParam(giMaximalExposure); - int nr_read_modes = m_cam.IntParam(gipReadModes); - int dflt_read_mode = m_cam.IntParam(gipDefaultReadMode); + int nr_read_modes = m_cam.IntParam(giReadModes); + int dflt_read_mode = m_cam.IntParam(giDefaultReadMode); - bool can_get_gain = m_cam.BoolParam(gbpGain); + bool can_get_gain = m_cam.BoolParam(gbGain); if (can_get_gain) Debug.Write(wxString::Format("MVN: GetGain: %.3f\n", m_cam.GetValue(gvADCGain))); - m_maxGain = m_cam.IntParam(gipMaxGain); + m_maxGain = m_cam.IntParam(giMaxGain); int default_gain = 0; // TODO: ask moravian m_defaultGainPct = gain_pct(0, m_maxGain, default_gain); Debug.Write(