35 Commits
1.0.2 ... 1.1.2

Author SHA1 Message Date
Jim Larsson
62065f7f44 Merge branch 'v1.1.2_fix' into 'master'
uncomment line

See merge request epics-modules/adorca!28
2024-12-19 10:49:18 +00:00
Jim Larsson
00cb454e8c uncomment line 2024-12-19 11:24:08 +01:00
Jim Larsson
66cbff0ca4 Merge branch '1.1.2_bugfixes' into 'master'
fix compilation errors and warnings

See merge request epics-modules/adorca!27
2024-12-18 13:17:23 +00:00
Jim Larsson
934ce7afd0 fix compilation errors and warnings 2024-12-18 13:16:44 +00:00
Jim Larsson
47a2b8435f Merge branch 'ICSHWI_19722_orca_acq_modes' into 'master'
Icshwi 19722 orca acq modes

See merge request epics-modules/adorca!26
2024-12-18 13:04:13 +00:00
Jim Larsson
eaebcece9d added placeholder for LEVEL and sync triggers 2024-12-05 16:21:56 +01:00
Jim Larsson
994242e524 seperate timeout from syncreadout 2024-12-03 14:47:06 +01:00
Douglas Araujo
ca22a8166c Fix initial value for SensorCooler 2024-10-29 10:57:26 +01:00
Douglas Araujo
6f0f6357be Fix mbbi item string length 2024-10-29 10:55:30 +01:00
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 2985 additions and 3669 deletions

6
.gitignore vendored
View File

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

File diff suppressed because it is too large Load Diff

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -1,10 +1,8 @@
# This should be a test startup script
require adorca require adorca
require adpluginkafka require adpluginkafka
epicsEnvSet("PREFIX", "Orca:") epicsEnvSet("PREFIX", "YMIR-Det1:")
epicsEnvSet("PORT", "ORCA") epicsEnvSet("PORT", "ORCA")
epicsEnvSet("CAMERA", "0")
epicsEnvSet("QSIZE", "21") epicsEnvSet("QSIZE", "21")
epicsEnvSet("XSIZE", "2048") epicsEnvSet("XSIZE", "2048")
epicsEnvSet("YSIZE", "2048") epicsEnvSet("YSIZE", "2048")
@@ -14,17 +12,16 @@ epicsEnvSet("NELEMENTS", "4194304")
epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "64000000") epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "64000000")
#EVR settings #EVR settings
#epicsEnvSet("EVR", "LabS-NIDO:Ctrl-EVR-01") epicsEnvSet("EVR", "YMIR-TS:Ctrl-EVR-03")
epicsEnvSet("EVR", "Labs-ECDC:TS-EVR-11")
epicsEnvSet("EVR_EVENT", "B") epicsEnvSet("EVR_EVENT", "B")
# iocshLoad("$(adorca_DIR)ADOrca.iocsh") # 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") 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) #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)") 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. # Create a kafka plugin, set it to get data from orca driver.
#epicsEnvSet("KFK_TOPIC", "ymir_camera") epicsEnvSet("KFK_TOPIC", "ymir_camera")
epicsEnvSet("KFK_TOPIC", "nido_camera")
# Kafka plugin # 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)") #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)") #dbLoadRecords("$(adpluginkafka_DIR)db/adpluginkafka.db", "P=$(PREFIX), R=Kfk1:, PORT=KFK1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=$(PORT)")
startPVAServer # startPVAServer
iocInit() iocInit()
dbpf Orca:cam1:PoolUsedMem.SCAN 0 dbpf $(PREFIX)cam1:PoolUsedMem.SCAN 0
dbpf Orca:image1:EnableCallbacks 1 dbpf $(PREFIX)image1:EnableCallbacks 1
dbpf Orca:Kfk1:EnableCallbacks 1
dbpf Orca:cam1:AcquireTime .001 dbpf $(PREFIX)cam1:AcquireTime .05
dbpf Orca:cam1:AcquirePeriod .02 dbpf $(PREFIX)cam1:AcquirePeriod .1
dbpf Orca:cam1:TriggerSource-S 1 # external dbpf $(PREFIX)cam1:NumImages 10
dbpf Orca:cam1:NumImages 10 dbpf $(PREFIX)cam1:ImageMode 1
dbpf Orca:cam1:ImageMode 1
#dbpf Orca:cam1:TriggerPolarity-S # 2-positive, 1-negative #dbpf Orca:cam1:TriggerPolarity-S # 2-positive, 1-negative
epicsThreadSleep(1.0) epicsThreadSleep(1.0)
dbl > pv.list dbpf $(PREFIX)cam1:PoolUsedMem.SCAN 0
dbpf $(PREFIX)image1:EnableCallbacks 1
epicsThreadSleep(1.0)