diff --git a/debian/libasi/changelog b/debian/libasi/changelog index 9c5f504ca..db9e61fae 100644 --- a/debian/libasi/changelog +++ b/debian/libasi/changelog @@ -1,3 +1,40 @@ +libasi (1.32) jammy; urgency=medium + + * ASI Camera SDK 1.32 release. Change log for this and couple of + previous versions. + + 1.32: + New Features + 1. Can remember the last state of cooling camera's fan speed and LED + state. + Optimization + 1. ASI2600 linearity of image brightness in long exposure state. + 2. ASI120 Mini no longer supports overclocking feature. + 3. Maximum number of supported camera models changed to 256 + Bug fix + 1. In rare cases, two different ASI cameras are recognized as the same + camera. + 2. ASI2600 has no image in high speed mode. + 3. GPS time of GPS cameras is inaccurate in individual cases. + 4. ASI664/ASI715 has no image under certain exposure times in hardware + Bin2 state. + 5. ASI2600 drops frames in high speed mode when transmitting data via + USB2.0. + + 1.31: + New Features + 1. Add ASI664MC,ASI715MC. + 2. Add fan speed control and LED light control for cooler cameras. + 3. For customized cameras, GPS functionality has been added. + Bug fix + 1. fixed the bug of ASI220Mini's brightness on high gain. + + 1.30: + Bug fix + 1. Fix low frame rate problem in ASI462MM high-speed mode. + + -- Jarno Paananen Fri, 01 Dec 2023 22:00:46 +0200 + libasi (1.31) jammy; urgency=medium * ASI Camera SDK 1.31 release. No change log posted. diff --git a/libasi/ASICamera2.h b/libasi/ASICamera2.h index a87faa173..04c51037a 100644 --- a/libasi/ASICamera2.h +++ b/libasi/ASICamera2.h @@ -39,7 +39,7 @@ while(1) #define ASICAMERA_API #endif -#define ASICAMERA_ID_MAX 128 +#define ASICAMERA_ID_MAX 256 typedef enum ASI_BAYER_PATTERN{ ASI_BAYER_RG=0, @@ -665,6 +665,38 @@ ASI_ERROR_TIMEOUT: no image get and timeout ASICAMERA_API ASI_ERROR_CODE ASIGetVideoData(int iCameraID, unsigned char* pBuffer, long lBuffSize, int iWaitms); +/*************************************************************************** +Descriptions: +get data from the video buffer.the buffer is very small +you need to call this API as fast as possible, otherwise frame will be discarded +so the best way is maintain one buffer loop and call this API in a loop +please make sure the buffer size is biger enough to hold one image +otherwise the this API will crash + + +Paras: +int CameraID: this is get from the camera property use the API ASIGetCameraProperty +unsigned char* pBuffer, caller need to malloc the buffer, make sure the size is big enough +the size in byte: +8bit mono:width*height +16bit mono:width*height*2 +RGB24:width*height*3 + +int iWaitms, this API will block and wait iWaitms to get one image. the unit is ms +-1 means wait forever. this value is recommend set to exposure*2+500ms + +GPS_DATA *gpsData, if camera support GPS, the GPS data will pass to incomming parameter, +the GPS data struct is define at the top of this file. + +return: +ASI_SUCCESS : Operation is successful +ASI_ERROR_CAMERA_CLOSED : camera didn't open +ASI_ERROR_INVALID_ID :no camera of this ID is connected or ID value is out of boundary +ASI_ERROR_TIMEOUT: no image get and timeout +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIGetVideoDataGPS(int iCameraID, unsigned char* pBuffer, long lBuffSize, int iWaitms, ASI_GPS_DATA *gpsData); + + /*************************************************************************** Descriptions: PulseGuide of the ST4 port on. this function only work on the module which have ST4 port @@ -779,6 +811,33 @@ ASI_ERROR_TIMEOUT: no image get and timeout ***************************************************************************/ ASICAMERA_API ASI_ERROR_CODE ASIGetDataAfterExp(int iCameraID, unsigned char* pBuffer, long lBuffSize); +/*************************************************************************** +Descriptions: +get data after exposure. +please make sure the buffer size is biger enough to hold one image +otherwise the this API will crash + + +Paras: +int CameraID: this is get from the camera property use the API ASIGetCameraProperty +unsigned char* pBuffer, caller need to malloc the buffer, make sure the size is big enough +the size in byte: +8bit mono:width*height +16bit mono:width*height*2 +RGB24:width*height*3 + +GPS_DATA *gpsData, if camera support GPS, the GPS data will pass to incomming parameter, +the GPS data struct is define at the top of this file. + + +return: +ASI_SUCCESS : Operation is successful +ASI_ERROR_CAMERA_CLOSED : camera didn't open +ASI_ERROR_INVALID_ID :no camera of this ID is connected or ID value is out of boundary +ASI_ERROR_TIMEOUT: no image get and timeout +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIGetDataAfterExpGPS(int iCameraID, unsigned char* pBuffer, long lBuffSize, ASI_GPS_DATA *gpsData); + /*************************************************************************** Descriptions: get camera id stored in flash, only available for USB3.0 camera @@ -982,6 +1041,139 @@ ASI_ERROR_GPS_DATA_INVALID : GPS has not yet found the satellite or FPGA cannot ***************************************************************************/ ASICAMERA_API ASI_ERROR_CODE ASIGPSGetData(int iCameraID, ASI_GPS_DATA* startLineGPSData, ASI_GPS_DATA* endLineGPSData); + +/*************************************************************************** +Description: +Enable the debug log output +Paras: +int CameraID: this is get from the camera property use the API ASIGetCameraProperty. +ASI_BOOL bEnable: true to enable the log output and false to disable. + +return: +ASI_SUCCESS : Operation is successful +ASI_ERROR_CAMERA_CLOSED : camera didn't open +ASI_ERROR_INVALID_ID :no camera of this ID is connected or ID value is out of boundary +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIEnableDebugLog(int iCameraID, ASI_BOOL bEnable); + +/*************************************************************************** +Description: +Get the status that if the debug log file output is enabled +Paras: +int CameraID: this is get from the camera property use the API ASIGetCameraProperty. +ASI_BOOL *bEnable: true if the log output is enabled and false if the log output is disabled. + +return: +ASI_SUCCESS : Operation is successful +ASI_ERROR_CAMERA_CLOSED : camera didn't open +ASI_ERROR_INVALID_ID :no camera of this ID is connected or ID value is out of boundary +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIGetDebugLogIsEnabled(int iCameraID, ASI_BOOL *bEnable); + +//#define ASIPRODUCE //API for Produce. It needs to be commented out when it is released to the public +#ifdef ASIPRODUCE +//#define SEESTAR_PRODUCE //Only for Seestar production. If you want to release USB cameras' production SDK, please comment this Macro +ASICAMERA_API ASI_ERROR_CODE ASISaveHPCTable(int iCameraID, unsigned char *table, long len); +/*************************************************************************** +Description: +Get the number of HPC + +piVal: the number of HPC. +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIHPCNumber(int iCameraID, int* piVal); +/*************************************************************************** +Description: +Get the HPC table. When you malloc the table, make sure the length is max_width * max_height / 8 + +table: the array which contains HPC table. +len: max_width * max_height / 8 +Note: note that the HPC table you get is compressed.One byte contains 8 pixels. +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIGetHPCTable(int iCameraID, unsigned char* table, long len); +ASICAMERA_API ASI_ERROR_CODE ASIEnableHPC(int iCameraID, ASI_BOOL bVal); +ASICAMERA_API int ASIGetIDByIndex(int iCameraIndex); +/*************************************************************************** +Description: +The sensor is set to output continuous gradient image to facilitate the detection of snowflake screen + +bEnable: ASI_ TRUE means output continuous gradient image, ASI_ FALSE indicates the actual image +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIEnableSnowTest(int iCameraID, ASI_BOOL bEnable); +/*************************************************************************** +Description: +Write sensor register directly. Used for ASIProduce only. + +iAddr: the address of the register +iValue: the value to write to the register +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIWriteSonyReg(int iCameraID, unsigned short iAddr, unsigned char iValue); +/*************************************************************************** +Description: +Read FPGA register directly. Used for ASIProduce only. + +iAddr: the address of the register +iValue: the value read from the register +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIReadFPGAReg(int iCameraID, unsigned short iAddr, unsigned char* piValue); + +/*************************************************************************** +Description: +Read special register. Used for ASIProduce(Seestar) only. + +iCmd: the cmd, for Seestar E-compass, it's 0xE8 +iAddr: the address of the register, for Seestar E-compass, it's 0 +iValue: the value read from the register, for Seestar E-compass, it's 0x0E48 +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIReadSpecialReg(int iCameraID, unsigned char iCmd, unsigned short iAddr, unsigned short* piValue); + +ASICAMERA_API int ASIGetPID(int iCameraID); + +/*************************************************************************** +Description: +Switch 2 group filter. Used for ASIProduce only. + +group: the group of filter +val: left or right position +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIS50FilterSwitch(int iCameraID, int group, int val); + +/*************************************************************************** +Description: +Enable and disable heater of S50. Used for ASIProduce only. + +val: enable or disable +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIS50Heater(int iCameraID, ASI_BOOL bEnable); + +/*************************************************************************** +Description: +Get the status of RA and DEC of S50. Used for ASIProduce only. + +bRaEn: TRUE is block, FALSE is not block +bDecEn: TRUE is block, FALSE is not block +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASIS50RADECSensor(int iCameraID, ASI_BOOL* bRaEn, ASI_BOOL* bDecEn); + +#endif // ASIPRODUCE + +//#define INNER_TEST //Inner testŁ¬do not release to public. It must be commented before release +//#define SMLTEST //Test by SML. It must be commented before release + +#ifdef INNER_TEST +/*************************************************************************** +Description: +Set the Cooling Temperature parameters. Used for ASIProduce only. + +nTempSegment: The separator temperature. When the temperature is higher than the separation point, +adopt faster cooling speed to improve efficiency. When the temperature is lower than the separation point, +use a slower speed to cool the camera to avoid fogging or icing. +nHighTempDurationSec: The cooling time from current temperature to separator temperature. +nLowTempDurationSec: The cooling time form separator temperature to target temperature. +***************************************************************************/ +ASICAMERA_API ASI_ERROR_CODE ASISetTempControlValue(int iCameraID, int nTempSegment, int nHighTempDurationSec, int nLowTempDurationSec); +#endif // INNER_TEST + + #ifdef __cplusplus } #endif diff --git a/libasi/CMakeLists.txt b/libasi/CMakeLists.txt index cea5a6d77..89eb18e7c 100644 --- a/libasi/CMakeLists.txt +++ b/libasi/CMakeLists.txt @@ -1,12 +1,12 @@ cmake_minimum_required (VERSION 3.0) project (libasi) -# Using ASI Camera SDK Version 1.31 updated on 2023-10-28 +# Using ASI Camera SDK Version 1.32 updated on 2023-12-01 # Using ASI EFW SDK Version 1.7 updated on 2021-05-17 # Using ASI ST4 SDK Version 1.0 updated on 2018-07-23 # Using ASI EAF SDK Version 1.6 updated on 2023-03-16 -set (ASICAM_VERSION "1.31") +set (ASICAM_VERSION "1.32") set (ASICAM_SOVERSION "1") set (ASIEFW_VERSION "1.7") diff --git a/libasi/armv6/libASICamera2.bin b/libasi/armv6/libASICamera2.bin index 250970e74..721da123e 100644 Binary files a/libasi/armv6/libASICamera2.bin and b/libasi/armv6/libASICamera2.bin differ diff --git a/libasi/armv7/libASICamera2.bin b/libasi/armv7/libASICamera2.bin index 7f9588075..f1be65daa 100644 Binary files a/libasi/armv7/libASICamera2.bin and b/libasi/armv7/libASICamera2.bin differ diff --git a/libasi/armv8/libASICamera2.bin b/libasi/armv8/libASICamera2.bin index f8be948d1..8303cafdc 100644 Binary files a/libasi/armv8/libASICamera2.bin and b/libasi/armv8/libASICamera2.bin differ diff --git a/libasi/mac/libASICamera2.bin b/libasi/mac/libASICamera2.bin index 831418273..f0d88b9c4 100644 Binary files a/libasi/mac/libASICamera2.bin and b/libasi/mac/libASICamera2.bin differ diff --git a/libasi/x64/libASICamera2.bin b/libasi/x64/libASICamera2.bin index 0609622f6..53c6c3f9c 100644 Binary files a/libasi/x64/libASICamera2.bin and b/libasi/x64/libASICamera2.bin differ diff --git a/libasi/x86/libASICamera2.bin b/libasi/x86/libASICamera2.bin index d798303c1..d82cbac81 100644 Binary files a/libasi/x86/libASICamera2.bin and b/libasi/x86/libASICamera2.bin differ