26 Commits
1.0.2 ... 1.1.0

Author SHA1 Message Date
Caissa Roque
325821714a Merge branch 'temperature-control' into 'master'
Temperature control

See merge request epics-modules/adorca!25
2024-10-04 09:03:51 +00:00
Caissa Roque
1abd258517 Fix SensorCooler init value 2024-10-04 09:02:44 +00:00
Caissa Roque
4c0a03fd81 Add sensor cooler 2024-10-04 09:02:44 +00:00
Douglas Araujo
4f29439529 Merge branch 'ICSHWI-1929-fix-evr-properties' into 'master'
ICSHWI-19294: Update EVR property names

Closes ICSHWI-19294

See merge request epics-modules/adorca!24
2024-10-02 10:29:59 +00:00
Douglas Araujo
f7410e5473 Update evr property names 2024-09-30 13:53:34 +02:00
Douglas Araujo
6384a20af1 Merge branch 'ICSHWI-11121-tidy-up' into 'master'
ICSHWI-11121: Tidyup code

See merge request epics-modules/adorca!23
2024-09-24 07:41:57 +00:00
Douglas Araujo
7e496979ce Improve internalframe PV desc according DCAM-API 2024-09-23 15:37:33 +02:00
Douglas Araujo
5a14d155e3 Remove duplicate record 2024-09-23 15:23:53 +02:00
Douglas Araujo
429c991544 Remove empty if statement 2024-09-23 14:54:28 +02:00
Douglas Araujo
2d9bb69fb8 Remove unnecessary line 2024-09-23 14:53:15 +02:00
Douglas Araujo
2c23087d04 Improve descriptions 2024-09-23 14:52:29 +02:00
Douglas Araujo
7aacd3e881 Apply dbformat on template file, and add DESC field 2024-09-16 16:31:27 +02:00
Douglas Araujo
343a17ae9f Replace ao printError calls 2024-09-16 15:28:58 +02:00
Douglas Araujo
49c9eb4c20 Refactor writeFloat64 method 2024-09-16 14:22:38 +02:00
Douglas Araujo
a94ca36d90 Refactor writeInt32 method 2024-09-16 13:16:18 +02:00
Douglas Araujo
587c23cacc Add ERR message formatter 2024-09-16 13:11:54 +02:00
Douglas Araujo
7ac340473d Remove disconnect method once that it was only returning true always 2024-09-13 12:01:49 +02:00
Douglas Araujo
52c274d5b2 Remove unused class parameter and update the devOrcaConfig iocsh function 2024-09-13 11:59:44 +02:00
Douglas Araujo
6652bc2264 Remove FLOWs in the constructor 2024-09-13 11:52:45 +02:00
Douglas Araujo
9225d07a0d Replace printf to asynPrint 2024-09-12 12:59:05 +02:00
Douglas Araujo
481b7722c5 Remove unnecessary prints.
In the virtual asynFunctions the infos are available through  asynPrint using ASYN_TRACEIO_DRIVER
2024-09-12 12:46:42 +02:00
Douglas Araujo
1ec9ec9f50 Add createAsynParams method to tidy up the constructor 2024-09-12 11:59:37 +02:00
Douglas Araujo
aa7a350688 Remove unused methods 2024-09-12 11:36:56 +02:00
Douglas Araujo
3b0e24798f Remove commented code 2024-09-12 11:34:51 +02:00
Douglas Araujo
c587eabd00 Merge branch 'ICSHWI-11121-clang-format' into 'master'
Apply clang-format following google standards

See merge request epics-modules/adorca!22
2024-09-11 15:14:46 +00:00
Douglas Araujo
15fd21a1e0 Apply clang-format following google standards 2024-09-11 17:06:38 +02:00
6 changed files with 2909 additions and 3619 deletions

3
.gitignore vendored
View File

@@ -11,3 +11,6 @@ core.*
list.txt
kafka.conf
ecdc-kafka-ca.crt
.pre-commit-config.yaml
.clang-format
.iocsh_history

File diff suppressed because it is too large Load Diff

View File

@@ -3,22 +3,20 @@
/* Date: 2022-03-16 */
#include <stddef.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "epicsExit.h"
#include "epicsThread.h"
#include "iocsh.h"
int main(int argc,char *argv[])
{
if(argc>=2) {
iocsh(argv[1]);
epicsThreadSleep(.2);
}
iocsh(NULL);
epicsExit(0);
return(0);
int main(int argc, char *argv[]) {
if (argc >= 2) {
iocsh(argv[1]);
epicsThreadSleep(.2);
}
iocsh(NULL);
epicsExit(0);
return (0);
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,9 @@
#ifndef DRV_HAMA_H
#define DRV_HAMA_H
// EPICS includes
#include <epicsExport.h>
#include <iocsh.h>
#include "ADDriver.h"
#include "dcamapi4.h"
@@ -10,313 +13,342 @@
#define MAX_H_SENSOR_SIZE 2048
#define MAX_V_SENSOR_SIZE 2048
#define hFrameRateString "H_FRAMERATE"
#define hOrcaNameString "H_HAMA_NAME" /* asynOctet ro */
#define hVendorString "H_VENDOR" /* asynOctet ro */
#define hModelString "H_MODEL" /* asynOctet ro */
#define hCameraIDString "H_CAMERAID" /* asynOctet ro */
#define hBusString "H_BUS" /* asynOctet ro */
#define hCameraVersionString "H_CAMERA_VERSION" /* asynOctet ro */
#define hDriverVersionString "H_DRIVER_VERSION" /* asynOctet ro */
#define hModuleVersionString "H_MODULE_VERSION" /* asynOctet ro */
#define hDcamApiVersionString "H_DCAM_API_VERSION" /* asynOctet ro */
#define hFrameRateString "H_FRAMERATE"
#define hOrcaNameString "H_HAMA_NAME" /* asynOctet ro */
#define hVendorString "H_VENDOR" /* asynOctet ro */
#define hModelString "H_MODEL" /* asynOctet ro */
#define hCameraIDString "H_CAMERAID" /* asynOctet ro */
#define hBusString "H_BUS" /* asynOctet ro */
#define hCameraVersionString "H_CAMERA_VERSION" /* asynOctet ro */
#define hDriverVersionString "H_DRIVER_VERSION" /* asynOctet ro */
#define hModuleVersionString "H_MODULE_VERSION" /* asynOctet ro */
#define hDcamApiVersionString "H_DCAM_API_VERSION" /* asynOctet ro */
// Sensor mode and speed
#define hSensorModeString "H_SENSOR_MODE" /* asynint32 rw */
#define hReadoutSpeedString "H_READOUT_SPEED" /* asynInt32 rw */
#define hReadoutDirectionString "H_READOUT_DIRECTION" /* asynIekt32 rw */
// Sensor mode and speed
#define hSensorModeString "H_SENSOR_MODE" /* asynint32 rw */
#define hReadoutSpeedString "H_READOUT_SPEED" /* asynInt32 rw */
#define hReadoutDirectionString "H_READOUT_DIRECTION" /* asynIekt32 rw */
// Trigger
#define hTriggerSourceString "H_TRIGGER_SOURCE" /* asynInt32 rw */
#define hTriggerModeString "H_TRIGGER_MODE" /* asynInt32 rw */
#define hTriggerActiveString "H_TRIGGER_ACTIVE" /* asynInt32 rw */
#define hTriggerGlobalExposureString "H_TRIGGER_GLOBAL_EXPOSURE" /* asynInt32 rw */
#define hTriggerPolarityString "H_TRIGGER_POLARITY" /* asynInt32 rw */
#define hTriggerConnectorString "H_TRIGGER_CONNECTOR" /* asynInt32 rw */
#define hTriggerTimesString "H_TRIGGER_TIMES" /* asynInt32 rw */
#define hTriggerDelayString "H_TRIGGER_DELAY" /* asynFloat64 rw */
#define hInternalTriggerHandlingString "H_INTERNAL_TRIGGER_HANDLING" /* asynInt32 rw */
#define hTriggerSourceString "H_TRIGGER_SOURCE" /* asynInt32 rw */
#define hTriggerModeString "H_TRIGGER_MODE" /* asynInt32 rw */
#define hTriggerActiveString "H_TRIGGER_ACTIVE" /* asynInt32 rw */
#define hTriggerGlobalExposureString \
"H_TRIGGER_GLOBAL_EXPOSURE" /* asynInt32 rw */
#define hTriggerPolarityString "H_TRIGGER_POLARITY" /* asynInt32 rw */
#define hTriggerConnectorString "H_TRIGGER_CONNECTOR" /* asynInt32 rw */
#define hTriggerTimesString "H_TRIGGER_TIMES" /* asynInt32 rw */
#define hTriggerDelayString "H_TRIGGER_DELAY" /* asynFloat64 rw */
#define hInternalTriggerHandlingString \
"H_INTERNAL_TRIGGER_HANDLING" /* asynInt32 rw */
// Sensor cooler
#define hSensorTemperatureString "H_SENSOR_TEMPERATURE" /* asynFloat64 ro */
#define hSensorCoolerString "H_SENSOR_COOLER" /* asynInt32 rw */
#define hSensorCoolerStatusString "H_SENSOR_COOLER_STATUS" /* asynInt32 ro */
#define hSensorTemperatureString "H_SENSOR_TEMPERATURE" /* asynFloat64 ro */
#define hSensorCoolerString "H_SENSOR_COOLER" /* asynInt32 rw */
#define hSensorCoolerStatusString "H_SENSOR_COOLER_STATUS" /* asynInt32 ro */
// Binning and ROI
#define hBinningString "H_BINNING" /* asynInt32 rw */
#define hSubarrayHPosString "H_SUBARRAY_HPOST" /* asynInt32 rw */
#define hSubarrayHSizeString "H_SUBARRAY_HSIZE" /* asynInt32 rw */
#define hSubarrayVPosString "H_SUBARRAY_VPOS" /* asynInt32 rw */
#define hSubarrayVSizeString "H_SUBARRAY_VSIZE" /* asynInt32 rw */
#define hSubarrayModeString "H_SUBARRAY_MODE" /* asynInt32 rw */
// #define hFrameBundleMode (usb3 only not implemented)
// #define hFrameBundleNumber (usb3 only not implemented)
#define hBinningString "H_BINNING" /* asynInt32 rw */
#define hSubarrayHPosString "H_SUBARRAY_HPOST" /* asynInt32 rw */
#define hSubarrayHSizeString "H_SUBARRAY_HSIZE" /* asynInt32 rw */
#define hSubarrayVPosString "H_SUBARRAY_VPOS" /* asynInt32 rw */
#define hSubarrayVSizeString "H_SUBARRAY_VSIZE" /* asynInt32 rw */
#define hSubarrayModeString "H_SUBARRAY_MODE" /* asynInt32 rw */
// ALU
#define hDefectCorrectModeString "H_DEFECTCORRECT_MODE" /* asynInt32 rw */
#define hHotPixelCorrectLevelString "H_HOT_PIXEL_CORRECT_LEVEL" /* asynInt32 rw */
#define hIntensityLutModeString "H_INTENSITY_LUT_MODE" /* asynInt32 rw */
#define hIntensityLutPageString "H_INTENSITY_LUT_PAGE" /* asynInt32 ro */
#define hExtractionModeString "H_EXTRACTION_MODE" /* asynInt32 ro */
#define hDefectCorrectModeString "H_DEFECTCORRECT_MODE" /* asynInt32 rw */
#define hHotPixelCorrectLevelString \
"H_HOT_PIXEL_CORRECT_LEVEL" /* asynInt32 rw */
#define hIntensityLutModeString "H_INTENSITY_LUT_MODE" /* asynInt32 rw */
#define hIntensityLutPageString "H_INTENSITY_LUT_PAGE" /* asynInt32 ro */
#define hExtractionModeString "H_EXTRACTION_MODE" /* asynInt32 ro */
// output trigger
#define hNumberOfOutputTriggerConnectorString "H_NUMBEROF_OUTPUTTRIGGERCONNECTOR" /* asynInt32 ro */
#define hOutputTriggerSource0String "H_OUTPUT_TRIGGER_SOURCE0" /* asynInt32 rw */
#define hOutputTriggerSource1String "H_OUTPUT_TRIGGER_SOURCE1" /* asynInt32 rw */
#define hOutputTriggerSource2String "H_OUTPUT_TRIGGER_SOURCE2" /* asynInt32 rw */
#define hOutputTriggerPolarity0String "H_OUTPUT_TRIGGER_POLARITY0" /* asynInt32 rw */
#define hOutputTriggerPolarity1String "H_OUTPUT_TRIGGER_POLARITY1" /* asynInt32 rw */
#define hOutputTriggerPolarity2String "H_OUTPUT_TRIGGER_POLARITY2" /* asynInt32 rw */
#define hOutputTriggerActive0String "H_OUTPUT_TRIGGER_ACTIVE0" /* asynInt32 ro */
#define hOutputTriggerActive1String "H_OUTPUT_TRIGGER_ACTIVE1" /* asynInt32 ro */
#define hOutputTriggerActive2String "H_OUTPUT_TRIGGER_ACTIVE2" /* asynInt32 ro */
#define hOutputTriggerDelay0String "H_OUTPUT_TRIGGER_DELAY0" /* asynFloat64 rw */
#define hOutputTriggerDelay1String "H_OUTPUT_TRIGGER_DELAY1" /* asynFloat64 rw */
#define hOutputTriggerDelay2String "H_OUTPUT_TRIGGER_DELAY2" /* asynFloat64 rw */
#define hOutputTriggerPeriod0String "H_OUTPUT_TRIGGER_PERIOD0" /* asynFloat64 rw */
#define hOutputTriggerPeriod1String "H_OUTPUT_TRIGGER_PERIOD1" /* asynFloat64 rw */
#define hOutputTriggerPeriod2String "H_OUTPUT_TRIGGER_PERIOD2" /* asynFloat64 rw */
#define hOutputTriggerKind0String "H_OUTPUT_TRIGGER_KIND0" /* asynInt32 rw */
#define hOutputTriggerKind1String "H_OUTPUT_TRIGGER_KIND1" /* asynInt32 rw */
#define hOutputTriggerKind2String "H_OUTPUT_TRIGGER_KIND2" /* asynInt32 rw */
#define hOutputTriggerBaseSensor0String "H_OUTPUT_TRIGGER_BASE_SENSOR0" /* asynInt32 rw */
#define hOutputTriggerBaseSensor1String "H_OUTPUT_TRIGGER_BASE_SENSOR1" /* asynInt32 rw */
#define hOutputTriggerBaseSensor2String "H_OUTPUT_TRIGGER_BASE_SENSOR2" /* asynInt32 rw */
#define hOutputTriggerPreHsyncCountString "H_OUTPUT_TRIGGER_PRE_HSYNC_COUNT" /* asynInt32 rw */
#define hNumberOfOutputTriggerConnectorString \
"H_NUMBEROF_OUTPUTTRIGGERCONNECTOR" /* asynInt32 ro */
#define hOutputTriggerSource0String \
"H_OUTPUT_TRIGGER_SOURCE0" /* asynInt32 rw */
#define hOutputTriggerSource1String \
"H_OUTPUT_TRIGGER_SOURCE1" /* asynInt32 rw */
#define hOutputTriggerSource2String \
"H_OUTPUT_TRIGGER_SOURCE2" /* asynInt32 rw */
#define hOutputTriggerPolarity0String \
"H_OUTPUT_TRIGGER_POLARITY0" /* asynInt32 rw */
#define hOutputTriggerPolarity1String \
"H_OUTPUT_TRIGGER_POLARITY1" /* asynInt32 rw */
#define hOutputTriggerPolarity2String \
"H_OUTPUT_TRIGGER_POLARITY2" /* asynInt32 rw */
#define hOutputTriggerActive0String \
"H_OUTPUT_TRIGGER_ACTIVE0" /* asynInt32 ro */
#define hOutputTriggerActive1String \
"H_OUTPUT_TRIGGER_ACTIVE1" /* asynInt32 ro */
#define hOutputTriggerActive2String \
"H_OUTPUT_TRIGGER_ACTIVE2" /* asynInt32 ro */
#define hOutputTriggerDelay0String \
"H_OUTPUT_TRIGGER_DELAY0" /* asynFloat64 rw */
#define hOutputTriggerDelay1String \
"H_OUTPUT_TRIGGER_DELAY1" /* asynFloat64 rw */
#define hOutputTriggerDelay2String \
"H_OUTPUT_TRIGGER_DELAY2" /* asynFloat64 rw */
#define hOutputTriggerPeriod0String \
"H_OUTPUT_TRIGGER_PERIOD0" /* asynFloat64 rw */
#define hOutputTriggerPeriod1String \
"H_OUTPUT_TRIGGER_PERIOD1" /* asynFloat64 rw */
#define hOutputTriggerPeriod2String \
"H_OUTPUT_TRIGGER_PERIOD2" /* asynFloat64 rw */
#define hOutputTriggerKind0String "H_OUTPUT_TRIGGER_KIND0" /* asynInt32 rw */
#define hOutputTriggerKind1String "H_OUTPUT_TRIGGER_KIND1" /* asynInt32 rw */
#define hOutputTriggerKind2String "H_OUTPUT_TRIGGER_KIND2" /* asynInt32 rw */
#define hOutputTriggerBaseSensor0String \
"H_OUTPUT_TRIGGER_BASE_SENSOR0" /* asynInt32 rw */
#define hOutputTriggerBaseSensor1String \
"H_OUTPUT_TRIGGER_BASE_SENSOR1" /* asynInt32 rw */
#define hOutputTriggerBaseSensor2String \
"H_OUTPUT_TRIGGER_BASE_SENSOR2" /* asynInt32 rw */
#define hOutputTriggerPreHsyncCountString \
"H_OUTPUT_TRIGGER_PRE_HSYNC_COUNT" /* asynInt32 rw */
// Master Puls
#define hMasterPulseModeString "H_MASTERPULSE_MODE" /* asynInt32 rw */
#define hMasterPulseTriggerSourceString "H_MASTERPULSE_TRIGGER_SOURCE" /* asynInt32 rw */
#define hMasterPulseIntervalString "H_MASTERPULSE_INTERVAL" /* asynFloat64 rw */
#define hMasterPulseBurstTimesString "H_MASTERPULSE_BURST_TIMES" /* asynInt32 rw */
#define hMasterPulseModeString "H_MASTERPULSE_MODE" /* asynInt32 rw */
#define hMasterPulseTriggerSourceString \
"H_MASTERPULSE_TRIGGER_SOURCE" /* asynInt32 rw */
#define hMasterPulseIntervalString \
"H_MASTERPULSE_INTERVAL" /* asynFloat64 rw */
#define hMasterPulseBurstTimesString \
"H_MASTERPULSE_BURST_TIMES" /* asynInt32 rw */
// Synchronious Timing
#define hTimingReadoutTimeString "H_TIMING_READOUT_TIME" /* asynFloat64 ro */
#define hTimingCyclicTriggerPeriodString "H_TIMING_CYCLICTRIGGERPERIOD" /* asynFloat64 ro */
#define hTimingMinTriggerBlankingString "H_TIMING_MIN_TRIGGER_BLANKING" /* asynFloat64 ro */
#define hTimingMinTriggerIntervalString "H_TIMING_MIN_TRIGGER_INTERVAL" /* asynFloat64 ro */
#define hTimingGlobalExposureDelayString "H_TIMING_GLOBAL_EXPOSURE_DELAY" /* asynFloat64 ro */
#define hTimingExposureString "H_TIMING_EXPOSURE" /* asynInt32 ro */
#define hTimingInvalidExposurePeriodString "H_TIMING_INVALID_EXPOSURE_PERIOD" /* asynFloat64 ro */
#define hInternalFrameRateString "H_INTERNAL_FRAME_RATE" /* asynFloat64 rw */
#define hInternalFrameIntervalString "H_INTERNAL_FRAME_INTERVAL" /* asynFloat64 rw */
#define hInternalLineSpeedString "H_INTERNAL_LINE_SPEED" /* asynFloat64 rw */
#define hInternalLineIntervalString "H_INTERNAL_LINE_INTERVAL" /* asynFloat64 rw */
#define hTimingReadoutTimeString "H_TIMING_READOUT_TIME" /* asynFloat64 ro */
#define hTimingCyclicTriggerPeriodString \
"H_TIMING_CYCLICTRIGGERPERIOD" /* asynFloat64 ro */
#define hTimingMinTriggerBlankingString \
"H_TIMING_MIN_TRIGGER_BLANKING" /* asynFloat64 ro */
#define hTimingMinTriggerIntervalString \
"H_TIMING_MIN_TRIGGER_INTERVAL" /* asynFloat64 ro */
#define hTimingGlobalExposureDelayString \
"H_TIMING_GLOBAL_EXPOSURE_DELAY" /* asynFloat64 ro */
#define hTimingExposureString "H_TIMING_EXPOSURE" /* asynInt32 ro */
#define hTimingInvalidExposurePeriodString \
"H_TIMING_INVALID_EXPOSURE_PERIOD" /* asynFloat64 ro */
#define hInternalFrameRateString "H_INTERNAL_FRAME_RATE" /* asynFloat64 rw */
#define hInternalFrameIntervalString \
"H_INTERNAL_FRAME_INTERVAL" /* asynFloat64 rw */
#define hInternalLineSpeedString "H_INTERNAL_LINE_SPEED" /* asynFloat64 rw */
#define hInternalLineIntervalString \
"H_INTERNAL_LINE_INTERVAL" /* asynFloat64 rw */
// System information
#define hColorTypeString "H_COLOR_TYPE" /* asynInt32 ro */
#define hBitPerChannelString "H_BIT_PER_CHANNEL" /* asynInt32 rw */
//#define hImageWidthString "H_IMAGE_WIDTH" /* asynInt32 ro */
//#define hImageHeightString "H_IMAGE_HEIGHT" /* asynInt32 ro */
#define hImageRowBytesString "H_IMAGE_ROWBYTES" /* asynInt32 ro */
#define hImageFrameBytesString "H_IMAGE_FRAMEBYTES" /* asynInt32 ro */
#define hImageTopOffsetBytesString "H_IMAGE_TOP_OFFSETBYTES" /* asynInt32 ro */
#define hImagePixelTypeString "H_IMAGE_PIXEL_TYPE" /* asynInt32 rw */
#define hBufferRowbytesString "H_BUFFER_ROWBYTES" /* asynInt32 ro */
#define hBufferFramebytesString "H_BUFFER_FRAMEBYTES" /* asynInt32 ro */
#define hBufferTopOffsetBytesString "H_BUFFER_TOP_OFFSETBYTES" /* asynInt32 ro */
#define hBufferPixelTypeString "H_BUFFER_PIXEL_TYPE" /* asynInt32 ro */
#define hRecordFixedBytesPerFileString "H_RECORD_FIXED_BYTES_PER_FILE" /* asynInt32 ro */
#define hRecordFixedBytesPerSessionString "H_RECORD_FIXED_BYTES_PER_SESION" /* asynInt32 ro */
#define hRecordFixedBytesPerFrameString "H_RECORD_FIXED_BYTES_PER_FRAME" /* asynInt32 ro */
#define hSystemAliveString "H_SYSTEM_ALIVE" /* asynInt32 ro */
#define hConversionFactorCoeffString "H_CONVERSIONFACTOR_COEFF" /* asynFloat64 ro */
#define hConversionFactorOffsetString "H_CONVERSIONFACTOR_OFFSET" /* asynFloat64 ro */
#define hNumberOfViewString "H_NUMBER_OF_VIEW" /* asynInt32 ro */
#define hImageDetectorPixelWidthString "H_IMAGE_DETECTOR_PIXEL_WIDTH" /* asynFloat64 ro */
#define hImageDetectorPixelHeightString "H_IMAGE_DETECTOR_PIXEL_HEIGHT" /* asynFloat64 ro */
#define hImageDetectorPixelNumHorzString "H_IMAGE_DETECTOR_PIXEL_NUM_HORZ" /* asynInt32 ro */
#define hImageDetectorPixelNumVertString "H_IMAGE_DETECTOR_PIXEL_NUM_VERT" /* asynInt32 ro */
#define hTimeStampProducerString "H_TIMESTAMP_PRODUCER" /* asynInt32 ro */
#define hFrameStampProducerString "H_FRAMESTAMP_PRODUCER" /* asynInt32 ro */
#define evrTimeStampString "EVR_TIMESTAMP"
#define evrCountString "EVR_COUNTS"
#define evrCountSinceAcqStartString "EVR_TRIGGERS_SINCE_ACQ_START"
#define evrTriggerDroppedString "EVR_TRIGGER_DROPPED"
#define hAcqControlString "H_ACQ_CONTROL"
#define hColorTypeString "H_COLOR_TYPE" /* asynInt32 ro */
#define hBitPerChannelString "H_BIT_PER_CHANNEL" /* asynInt32 rw */
#define hImageRowBytesString "H_IMAGE_ROWBYTES" /* asynInt32 ro */
#define hImageFrameBytesString "H_IMAGE_FRAMEBYTES" /* asynInt32 ro */
#define hImageTopOffsetBytesString \
"H_IMAGE_TOP_OFFSETBYTES" /* asynInt32 ro \
*/
#define hImagePixelTypeString "H_IMAGE_PIXEL_TYPE" /* asynInt32 rw */
#define hBufferRowbytesString "H_BUFFER_ROWBYTES" /* asynInt32 ro */
#define hBufferFramebytesString "H_BUFFER_FRAMEBYTES" /* asynInt32 ro */
#define hBufferTopOffsetBytesString \
"H_BUFFER_TOP_OFFSETBYTES" /* asynInt32 ro */
#define hBufferPixelTypeString "H_BUFFER_PIXEL_TYPE" /* asynInt32 ro */
#define hRecordFixedBytesPerFileString \
"H_RECORD_FIXED_BYTES_PER_FILE" /* asynInt32 ro */
#define hRecordFixedBytesPerSessionString \
"H_RECORD_FIXED_BYTES_PER_SESION" /* asynInt32 ro */
#define hRecordFixedBytesPerFrameString \
"H_RECORD_FIXED_BYTES_PER_FRAME" /* asynInt32 ro */
#define hSystemAliveString "H_SYSTEM_ALIVE" /* asynInt32 ro */
#define hConversionFactorCoeffString \
"H_CONVERSIONFACTOR_COEFF" /* asynFloat64 ro */
#define hConversionFactorOffsetString \
"H_CONVERSIONFACTOR_OFFSET" /* asynFloat64 ro */
#define hNumberOfViewString "H_NUMBER_OF_VIEW" /* asynInt32 ro */
#define hTimeStampProducerString "H_TIMESTAMP_PRODUCER" /* asynInt32 ro */
#define hFrameStampProducerString "H_FRAMESTAMP_PRODUCER" /* asynInt32 ro */
#define evrTimeStampString "EVR_TIMESTAMP"
#define evrCountString "EVR_COUNTS"
#define evrCountSinceAcqStartString "EVR_TRIGGERS_SINCE_ACQ_START"
#define evrTriggerDroppedString "EVR_TRIGGER_DROPPED"
#define hAcqControlString "H_ACQ_CONTROL"
// For some reason these two addresses are not defined in the dcamapi4 neither in dcamprop.h
// For some reason these two addresses are not defined in the dcamapi4 neither
// in dcamprop.h
#define DETECTOR_PIXEL_NUM_HORZ 0x00420830
#define DETECTOR_PIXEL_NUM_VERT 0x00420840
class epicsShareClass Orca : public ADDriver {
public:
Orca(const char*, int, size_t, int, int, int);
// ~Orca();
/* override ADDriver methods */
virtual asynStatus writeInt32(asynUser* pasynUser, epicsInt32 value);
virtual asynStatus writeFloat64(asynUser* pasynUser, epicsFloat64 value);
virtual void report(FILE* fp, int details);
public:
Orca(const char*, int, int, size_t, int, int, int);
// ~Orca();
/* override ADDriver methods */
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value);
virtual void report(FILE *fp, int details);
void createAsynParams();
int readParameter(int propertyID, bool processPV = true);
int readParameterStr(int paramIndex);
int readParameter(int propertyID, bool processPV = true);
int readParameterStr(int paramIndex);
epicsUInt32 mTimeStampSec;
epicsUInt32 mTimeStampNsec;
epicsUInt32 mTimeStampSec;
epicsUInt32 mTimeStampNsec;
void imageTask();
void temperatureTask();
void imageTask();
void temperatureTask();
protected:
int hFrameRate;
#define FIRST_HAMA_PARAM hFrameRate
int hOrcaName;
int hVendor;
int hModel;
int hCameraID;
int hBus;
int hCameraVersion;
int hDriverVersion;
int hModuleVersion;
int hDcamApiVersion;
// - sensor mode and speed
int hSensorMode;
int hReadoutSpeed;
int hReadoutDirection;
// - trigger
int hTriggerSource;
int hTriggerMode;
int hTriggerActive;
int hTriggerGlobalExposure;
int hTriggerPolarity;
int hTriggerConnector;
int hTriggerTimes;
int hTriggerDelay;
int hInternalTriggerHandling;
// - sensor cooler
int hSensorTemperature;
int hSensorCooler;
int hSensorCoolerStatus;
// - binning and roi
int hBinning;
int hSubarrayHPos;
int hSubarrayHSize;
int hSubarrayVPos;
int hSubarrayVSize;
int hSubarrayMode;
// - feature
int hExposureTime;
// - alu
int hDefectCorrectMode;
int hHotPixelCorrectLevel;
int hIntensityLutMode;
int hIntensityLutPage;
int hExtractionMode;
// - output trigger
int hNumberOfOutputTriggerConnector;
int hOutputTriggerSource0;
int hOutputTriggerSource1;
int hOutputTriggerSource2;
int hOutputTriggerPolarity0;
int hOutputTriggerPolarity1;
int hOutputTriggerPolarity2;
int hOutputTriggerActive0;
int hOutputTriggerActive1;
int hOutputTriggerActive2;
int hOutputTriggerDelay0;
int hOutputTriggerDelay1;
int hOutputTriggerDelay2;
int hOutputTriggerPeriod0;
int hOutputTriggerPeriod1;
int hOutputTriggerPeriod2;
int hOutputTriggerKind0;
int hOutputTriggerKind1;
int hOutputTriggerKind2;
int hOutputTriggerBaseSensor0;
int hOutputTriggerBaseSensor1;
int hOutputTriggerBaseSensor2;
int hOutputTriggerPreHsyncCount;
// - master pulse
int hMasterPulseMode;
int hMasterPulseTriggerSource;
int hMasterPulseInterval;
int hMasterPulseBurstTimes;
// - symchronous timing
int hTimingReadoutTime;
int hTimingCyclicTriggerPeriod;
int hTimingMinTriggerBlanking;
int hTimingMinTriggerInterval;
int hTimingGlobalExposureDelay;
int hTimingExposure;
int hTimingInvalidExposurePeriod;
int hInternalFrameRate;
int hInternalFrameInterval;
int hInternalLineSpeed;
int hInternalLineInterval;
// - system information
int hColorType;
int hBitPerChannel;
int hImageRowbytes;
int hImageFramebytes;
int hImageTopOffsetBytes;
int hImagePixelType;
int hBufferRowbytes;
int hBufferFramebytes;
int hBufferTopOffsetBytes;
int hBufferPixelType;
int hRecordFixedBytesPerFile;
int hRecordFixedBytesPerSession;
int hRecordFixedBytesPerFrame;
int hSystemAlive;
int hConversionFactorCoeff;
int hConversionFactorOffset;
int hNumberOfView;
int hImageDetectorPixelWidth;
int hImageDetectorPixelHeight;
int hImageDetectorPixelNumHorz;
int hImageDetectorPixelNumVert;
int hTimeStampProducer;
int hFrameStampProducer;
int evrCounts;
int evrCountsSinceAcqStart;
int evrTriggerDropped;
int hAcqControl;
int evrTimeStamp;
//----
//#define LAST_HAMA_PARAM evrTimeStamp
protected:
int hFrameRate;
#define FIRST_HAMA_PARAM hFrameRate
int hOrcaName;
int hVendor;
int hModel;
int hCameraID;
int hBus;
int hCameraVersion;
int hDriverVersion;
int hModuleVersion;
int hDcamApiVersion;
// - sensor mode and speed
int hSensorMode;
int hReadoutSpeed;
int hReadoutDirection;
// - trigger
int hTriggerSource;
int hTriggerMode;
int hTriggerActive;
int hTriggerGlobalExposure;
int hTriggerPolarity;
int hTriggerConnector;
int hTriggerTimes;
int hTriggerDelay;
int hInternalTriggerHandling;
// - sensor cooler
int hSensorTemperature;
int hSensorCooler;
int hSensorCoolerStatus;
// - binning and roi
int hBinning;
int hSubarrayHPos;
int hSubarrayHSize;
int hSubarrayVPos;
int hSubarrayVSize;
int hSubarrayMode;
// - feature
int hExposureTime;
// - alu
int hDefectCorrectMode;
int hHotPixelCorrectLevel;
int hIntensityLutMode;
int hIntensityLutPage;
int hExtractionMode;
// - output trigger
int hNumberOfOutputTriggerConnector;
int hOutputTriggerSource0;
int hOutputTriggerSource1;
int hOutputTriggerSource2;
int hOutputTriggerPolarity0;
int hOutputTriggerPolarity1;
int hOutputTriggerPolarity2;
int hOutputTriggerActive0;
int hOutputTriggerActive1;
int hOutputTriggerActive2;
int hOutputTriggerDelay0;
int hOutputTriggerDelay1;
int hOutputTriggerDelay2;
int hOutputTriggerPeriod0;
int hOutputTriggerPeriod1;
int hOutputTriggerPeriod2;
int hOutputTriggerKind0;
int hOutputTriggerKind1;
int hOutputTriggerKind2;
int hOutputTriggerBaseSensor0;
int hOutputTriggerBaseSensor1;
int hOutputTriggerBaseSensor2;
int hOutputTriggerPreHsyncCount;
// - master pulse
int hMasterPulseMode;
int hMasterPulseTriggerSource;
int hMasterPulseInterval;
int hMasterPulseBurstTimes;
// - symchronous timing
int hTimingReadoutTime;
int hTimingCyclicTriggerPeriod;
int hTimingMinTriggerBlanking;
int hTimingMinTriggerInterval;
int hTimingGlobalExposureDelay;
int hTimingExposure;
int hTimingInvalidExposurePeriod;
int hInternalFrameRate;
int hInternalFrameInterval;
int hInternalLineSpeed;
int hInternalLineInterval;
// - system information
int hColorType;
int hBitPerChannel;
int hImageRowbytes;
int hImageFramebytes;
int hImageTopOffsetBytes;
int hImagePixelType;
int hBufferRowbytes;
int hBufferFramebytes;
int hBufferTopOffsetBytes;
int hBufferPixelType;
int hRecordFixedBytesPerFile;
int hRecordFixedBytesPerSession;
int hRecordFixedBytesPerFrame;
int hSystemAlive;
int hConversionFactorCoeff;
int hConversionFactorOffset;
int hNumberOfView;
int hImageDetectorPixelWidth;
int hImageDetectorPixelHeight;
int hImageDetectorPixelNumHorz;
int hImageDetectorPixelNumVert;
int hTimeStampProducer;
int hFrameStampProducer;
int evrCounts;
int evrCountsSinceAcqStart;
int evrTriggerDropped;
int hAcqControl;
int evrTimeStamp;
//----
//#define LAST_HAMA_PARAM evrTimeStamp
private:
HDCAM m_hdcam;
DCAMAPI_INIT m_apiInit;
DCAMDEV_OPEN m_devOpen;
DCAMERR m_err;
HDCAMWAIT hwait;
private:
HDCAM m_hdcam;
DCAMAPI_INIT m_apiInit;
DCAMDEV_OPEN m_devOpen;
DCAMERR m_err;
// handle used to wait for events sent from the device
HDCAMWAIT hwait;
int stopThread;
int m_id;
int stopThread;
epicsEventId startEvent_;
epicsEventId startEvent_;
// Helper functions
asynStatus startAcquire(void);
asynStatus stopAcquire(void);
void getImageInformation(HDCAM hdcam, int32& pixeltype, int32& width,
int32& rowbytes, int32& height, int32& framebytes);
asynStatus accessCapturedImage(HDCAM hdcam, int32 iFrame, void* buf,
int32 rowbytes, int32 cx, int32 cy,
epicsUInt32& ts_sec, epicsUInt32& ts_microsec);
asynStatus imageTransferStatus(HDCAM hdcam,
DCAMCAP_TRANSFERINFO& captransferinfo);
// Helper functions
asynStatus startAcquire(void);
asynStatus stopAcquire(void);
void getImageInformation(HDCAM hdcam, int32& pixeltype, int32& width, int32& rowbytes, int32& height, int32& framebytes);
asynStatus accessCapturedImage(HDCAM hdcam, int32 iFrame, void* buf, int32 rowbytes, int32 cx, int32 cy, epicsUInt32& ts_sec, epicsUInt32& ts_microsec);
asynStatus imageTransferStatus(HDCAM hdcam, DCAMCAP_TRANSFERINFO &captransferinfo);
// wrapper functions for dcamapi
int allocateBuffers(unsigned int);
int freeBuffers();
// wrapper functions for dcamapi
int allocateBuffers(unsigned int);
int freeBuffers();
// These function will be read only once
int connectCamera();
int initCamera();
// These function will be read only once
int connectCamera();
int disconnectCamera();
int initCamera();
// helper functions for dcamapi
void printError(HDCAM hdcam, DCAMERR errid, const char* apiname, const char* fmt=NULL, ...);
void printInfo(HDCAM hdcam);
int dcamdev_string( DCAMERR& err, HDCAM hdcam, int32 idStr, char* text, int32 textbytes );
int getProperties();
int roundToNearestMultipleOfFour(int value);
asynStatus setFeature(int featureIndex, double value);
bool checkAndLogError(DCAMERR err, const char* msg, int idx, double val,
const char* functionName);
int roundToNearestMultipleOfFour(int value);
asynStatus setFeature(int featureIndex, double value);
};
#endif

View File

@@ -1,10 +1,8 @@
# This should be a test startup script
require adorca
require adpluginkafka
epicsEnvSet("PREFIX", "Orca:")
epicsEnvSet("PREFIX", "YMIR-Det1:")
epicsEnvSet("PORT", "ORCA")
epicsEnvSet("CAMERA", "0")
epicsEnvSet("QSIZE", "21")
epicsEnvSet("XSIZE", "2048")
epicsEnvSet("YSIZE", "2048")
@@ -14,17 +12,16 @@ epicsEnvSet("NELEMENTS", "4194304")
epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "64000000")
#EVR settings
#epicsEnvSet("EVR", "LabS-NIDO:Ctrl-EVR-01")
epicsEnvSet("EVR", "Labs-ECDC:TS-EVR-11")
epicsEnvSet("EVR", "YMIR-TS:Ctrl-EVR-03")
epicsEnvSet("EVR_EVENT", "B")
# iocshLoad("$(adorca_DIR)ADOrca.iocsh")
devOrcamatsuConfig("$(PORT)", $(CAMERA), 0, 0, 0, 0, 10)
devOrcaConfig("$(PORT)", 0, 0, 0, 0, 10)
dbLoadRecords("$(adorca_DIR)db/orca.db","P=$(PREFIX),R=cam1:,EVR=$(EVR),E=$(EVR_EVENT),PORT=$(PORT),ADDR=0,TIMEOUT=1")
#asynSetTraceMask("$(PORT)",-1,0x9)
#asynSetTraceMask("$(PORT)",-1,0x10)
#asynSetTraceIOMask("$(PORT)",-1,0x2)
@@ -42,30 +39,30 @@ NDStdArraysConfigure("Image1", "$(QSIZE)", 0, "$(PORT)", 0, 0)
dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int32,FTVL=LONG,NELEMENTS=$(NELEMENTS)")
# Create a kafka plugin, set it to get data from orca driver.
#epicsEnvSet("KFK_TOPIC", "ymir_camera")
epicsEnvSet("KFK_TOPIC", "nido_camera")
epicsEnvSet("KFK_TOPIC", "ymir_camera")
# Kafka plugin
epicsEnvSet("KFK_CONFIG_FILE_PATH", "/home/iocuser/git/adhama/cmds/kafka.conf")
#epicsEnvSet("KFK_CONFIG_FILE_PATH", "/etc/kafka/kafka.conf")
KafkaPluginConfigure("KFK1", 3, 1, "$(PORT)", 0, -1, "$(KFK_TOPIC)", "hama_kfk1","$(KFK_CONFIG_FILE_PATH)")
dbLoadRecords("$(adpluginkafka_DIR)db/adpluginkafka.db", "P=$(PREFIX), R=Kfk1:, PORT=KFK1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=$(PORT)")
#KafkaPluginConfigure("KFK1", 3, 1, "$(PORT)", 0, -1, "$(KFK_TOPIC)", "hama_kfk1","$(KFK_CONFIG_FILE_PATH)")
#dbLoadRecords("$(adpluginkafka_DIR)db/adpluginkafka.db", "P=$(PREFIX), R=Kfk1:, PORT=KFK1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=$(PORT)")
startPVAServer
# startPVAServer
iocInit()
dbpf Orca:cam1:PoolUsedMem.SCAN 0
dbpf Orca:image1:EnableCallbacks 1
dbpf Orca:Kfk1:EnableCallbacks 1
dbpf $(PREFIX)cam1:PoolUsedMem.SCAN 0
dbpf $(PREFIX)image1:EnableCallbacks 1
dbpf Orca:cam1:AcquireTime .001
dbpf Orca:cam1:AcquirePeriod .02
dbpf Orca:cam1:TriggerSource-S 1 # external
dbpf Orca:cam1:NumImages 10
dbpf Orca:cam1:ImageMode 1
dbpf $(PREFIX)cam1:AcquireTime .05
dbpf $(PREFIX)cam1:AcquirePeriod .1
dbpf $(PREFIX)cam1:NumImages 10
dbpf $(PREFIX)cam1:ImageMode 1
#dbpf Orca:cam1:TriggerPolarity-S # 2-positive, 1-negative
epicsThreadSleep(1.0)
dbl > pv.list
dbpf $(PREFIX)cam1:PoolUsedMem.SCAN 0
dbpf $(PREFIX)image1:EnableCallbacks 1
epicsThreadSleep(1.0)